【发布时间】:2017-07-12 02:30:17
【问题描述】:
我正在尝试创建一个 JSONArray 对象,并且在 JSONArray 中有另一个数组,其中包含一个对象,该对象是一个 json 字符串,如下所示。注意 res 字段。
[{
"time": 123813213,
"value": [{
"name": "task",
"res": "{\"taskName\" : \"NAME\", \"taskValue\" : 3}"
}]
}]
当我将上述内容作为字符串返回并执行时,这会导致异常
String jsonStr = "[{ \"time\": 123813213, \"value\": [{ \"name\": \"task\", \"res\": \"{\"taskName\", \"taskValue\"}\" }] }]";
JSONArray jsonArr = new JSONArray(jsonStr);
当我通过在我存储的 json 字符串所在的位置添加额外的 \ 来解决此问题时。
String jsonStr = "[{ \"time\": 123813213, \"value\": [{ \"name\": \"task\", \"res\": \"{\\\"taskName\\\", \\\"taskValue\"}\\\" }] }]";
JSONArray jsonArr = new JSONArray(jsonStr);
请注意我添加的附加 \。我不确定如何解决第一种情况,因为我不是自己创建 jsonStr,而是从某个地方获取它,它只包含一个 \ 而不是三个 \。在第一种情况下我做错了什么吗?
我得到的例外是使用第一个示例
org.json.JSONException: Expected a ',' or '}' at 61 [character 62 line 1]
at org.json.JSONTokener.syntaxError(JSONTokener.java:432)
at org.json.JSONObject.<init>(JSONObject.java:223)
at org.json.JSONTokener.nextValue(JSONTokener.java:362)
at org.json.JSONArray.<init>(JSONArray.java:117)
at org.json.JSONTokener.nextValue(JSONTokener.java:365)
at org.json.JSONObject.<init>(JSONObject.java:208)
at org.json.JSONTokener.nextValue(JSONTokener.java:362)
at org.json.JSONArray.<init>(JSONArray.java:117)
at org.json.JSONArray.<init>(JSONArray.java:145)
at Main.main(Main.java:10)
第二个例子解析得很好,返回正确的结果就是这个。
[{"time":123813213,"value":[{"res":"{\"taskName\", \"taskValue\"}","name":"task"}]}]
问题是如何让第一个示例返回这个?
【问题讨论】:
标签: javascript java arrays json