这是我的方法
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中可以获得我想要的输出(没有括号和引号)。
答案 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();
}
}