繁体   English   中英

无法拆分 json 响应?

[英]Unable to split json response?

这是我的方法

   public String buildJsonData(String username , String message)
    {
   JsonObject jsonObject = Json.createObjectBuilder().add("Username",username+":"+message).build();
   StringWriter stringWriter = new StringWriter();
   try(JsonWriter jsonWriter = Json.createWriter(stringWriter))
   {
  jsonWriter.write(jsonObject);
  }
  catch(Exception e)
  {
System.out.print("buildJsonData ="+e);
   }
  return stringWriter.toString();
   }

如果我将用户名输入为john并将消息输入为hello 。我得到的输出为

{“用户名”:“约翰:你好”}

但我想要没有大括号和双引号的输出我想要我的输出

约翰:你好

我尝试使用 array[0] 拆分它,但没有得到输出。是否有可能在 json 中得到我想要的输出(没有大括号和引号)。

您的结构并不是真正的 JSON。

一个 json 结构会像

{
    Username : "John",
    Message : "Hello"
}

Anf 如果您想真正使用 JSON,则无法删除大括号和引号。 这是杰森。

如果只想输出引用的部分,请将json值存储在变量中

String myoutput = stringWriter.toString();

然后使用 replace() 或 regexp 删除您不想要的部分

大括号是 JSON 符号的一部分——它们表示一个对象。 如果您删除它们,则它不再是 JSON。 双引号也是如此。您正在创建您的 JSON 对象:

Json.createObjectBuilder().add("Username",username+":"+message)

这将创建一个具有名为Username和值为john:hello属性的对象。 同样,这是 JSON 表示法。 它不是为了直接读取,而是为了促进应用程序之间的数据传输(在相同或不同的设备上)。

如果您只想创建john:message ,那么您应该简单地执行以下操作,而不是创建 JSON 对象:

String result = username + ":" + message;
return result;

在发送端,您可以将 Username 和 Message 实体放入 JSONObject 并通过网络发送结果字符串。

在接收端,您将解组 JSON 以提取实体。 然后,您可以随意格式化它们。

在此处阅读有关 JSON 编码的信息

这是一个简单的例子:

private String getResponse(){

JSONObject json = new JSONObject();
try {

    json.put("Username", "John");
    json.put("Message", "Hellow");
} catch (JSONException e) {

    e.printStackTrace();
}
return json.toString();
}

private void receiver(){
try {
    JSONObject response = new JSONObject(getResponse());
    String username = response.getString("Username");
    String message = response.getString("Message");
    System.out.println(String.format("%s : %s", username,message));

} catch (JSONException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM