Java JSON字符串中的意外转义
我想创建json字符串,比如Java JSON字符串中的意外转义,java,json,Java,Json,我想创建json字符串,比如 {"data":"{"name":"jay"}"} 使用org.json.*包 或者使用其他软件包 我的代码是:: try { String strJSONStringer = new JSONStringer().object().key("name").value("jay").endObject().toString(); String record = new JSONStringer().object().key("data") .val
{"data":"{"name":"jay"}"}
使用org.json.*包
或者使用其他软件包
我的代码是::
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\"}"}
您的问题是您对name=jay内部对象执行了一个
toString()
,这会将对象转换为字符串。在第二行中,基本上是说data=
,因此Json库必须通过使用\
对字符串中的“
进行转义来对其进行编码
所以你可能会这样说:
JSONObject inner = new JSONObject().put("name","jay");
JSONObject outer = new JSONObject().put("data",inner);
String result = outer.toString();
您不应该分两部分构建JSON字符串,这会导致第二个JSONString转义您的数据 只需使用生成器构建嵌套对象:
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"}}
data
的值实际上包含在一个字符串中,最里面的双引号被转义。@JayPatel:您确定要{“data”:“{“name”:“jay”}而不是{“data”:{“name”:“jay”}?这些引号位于一个奇怪的位置。。。