无法拆分json响应?

时间:2014-04-10 07:43:01

标签: java json

这是我的方法

   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中可以获得我想要的输出(没有括号和引号)。

3 个答案:

答案 0 :(得分:1)

你的结构不是真正的JSON。

json结构就像

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

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

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

String myoutput = stringWriter.toString();

然后使用replace()或regexp

删除不需要的部分

答案 1 :(得分:1)

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

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

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

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

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

答案 2 :(得分:1)

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

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

请阅读JSON编码here

这是一个简单的例子:

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();
}

}
相关问题