在Java中解析无名的JSON数组

时间:2014-06-09 20:16:09

标签: java json arrays

我试图解析从POST请求返回的无名JSONArray这种格式:

[{"key": value},
{"key": value},
{"key": value}]

我假设我只能使用这段代码调用数组:

JSONArray resArr = result.getJSONArray("");

其中result是POST返回的JSONObject,但我得到

Cannot parse json request result: org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]

还有其他方法可以调用getJSONArray以便我可以在没有密钥的情况下获得JSONArray吗?

2 个答案:

答案 0 :(得分:3)

正确的方法:

使用JSONArray(String) 1

将其解析为数组
JSONArray myJsonArray = new JSONArray(resultAsString);

hacky方式:

作为一个快速破解,您可以考虑构建一个有效的JSON对象。只需将{"wrappedArray":连接到您拥有的字符串的开头,然后}连接到结尾。然后,您应该能够解析它并调用getJSONArray("wrappedArray")来获取此数组。

1 这是一个javadoc的链接,您可以使用它来获取有关如何使用JSON库的更多详细信息。

答案 1 :(得分:-2)

默认的JSON包拒绝接受[作为它的初始字符。因此,result不能存储为JSONObject。您(我,我)需要做的是,只要它存储在本地,就将result存储为JSONArray。任何访问或修改数组的尝试都将返回[解析错误。因此,为了访问JSONArray,您需要重新编写POST方法以便能够返回JSONArrays(实际上,复制并粘贴方法,更改类型和名称)。这应解决类型问题,因为[是JSONArray的预期起始字符。