【发布时间】:2012-11-12 08:05:16
【问题描述】:
我正在努力用 Java 生成 JSON 字符串。
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
JSONArray ja = new JSONArray();
JSONObject js = new JSONObject();
JSONObject j = new JSONObject();
String s = "[{\"shakil\",\"29\",\"7676\"}]";
js.put("id", "1");
js.put("data", s);
ja.add(js);
j.put("rows", ja);
System.out.println(j.toString());
实际输出:
{"rows":[{"id":"2","data":"[{\"shakil\",\"29\",\"7676\"}]"}]}
预期输出:
{"rows":[{"id":"2","data":["shakil", "29","7676"]}]};
【问题讨论】:
-
你得到的输出似乎是正确的,如果我把一个字符串放在 json 中,我希望它仍然是一个字符串,而不是被解析。
-
@denis-tulskiy 这是一个公平的期望,但这不是 json-lib 所做的。如果一个字符串值可以解析为 JSON,json-lib 会悄悄地解析它并替换为 JSON 值。例如,
System.out.println(new JSONObject().element("outer", "{\"inner\":\"value\"}"))将打印{"outer":{"inner":"value"}}和 not{"outer":"{\"inner\":\"value\"}"}。有关详细信息,请参阅AbstractJSON的 line 245-271。