我想创建json字符串。 。
{"data":"{"name":"jay"}"}
使用 org.json。* packages 。
或使用其他包..
我的代码是::
try {
String strJSONStringer = new JSONStringer().object().key("name").value("jay").endObject().toString();
String record = new JSONStringer().object().key("data") .value(strJSONStringer).endObject().toString();
System.out.println("JSON STRING " + record);
} catch (JSONException e) {
e.printStackTrace();
System.out.println("### ERROR ### :: " + e.getMessage());
}
该程序的输出:
JSON STRING {"data":"{\"name\":\"jay\"}"}
答案 0 :(得分:3)
您的问题是您在name = jay内部对象上执行了toString()
,这会将此对象转换为字符串。在第二行中,您基本上会说data=<string from above>
,以便Json库必须通过使用"
转义它来对字符串中的\
进行编码。
所以你可能会这样:
JSONObject inner = new JSONObject().put("name","jay");
JSONObject outer = new JSONObject().put("data",inner);
String result = outer.toString();
答案 1 :(得分:1)
您不应该将JSON字符串分为两部分,这会导致第二个JSONStringer转义数据。
只需使用构建器构建嵌套对象:
try {
String record = new JSONStringer()
.object()
.key("data")
.object()
.key("name").value("jay")
.endObject()
.endObject().toString();
System.out.println("JSON STRING " + record);
} catch (JSONException e) {
e.printStackTrace();
System.out.println("### ERROR ### :: " + e.getMessage());
}
这给了我:
JSON STRING {"data":{"name":"jay"}}