在Android中没有键的解析JsonArray

时间:2014-06-07 07:19:00

标签: android json arrays

我有json响应,但这是标准格式吗?

[{"code":"123","rate":"0.1","title":"sss","subtitle":"mmm"},{"code":"456","rate":"0.1","title":"bbb","subtitle":"uuu"}]

如何在android中解析它?

new JSONObject(result.toString()) 

抛出异常!

06-07 11:45:54.943: W/System.err(10310):    at org.json.JSON.typeMismatch(JSON.java:111)
06-07 11:45:54.943: W/System.err(10310):    at org.json.JSONObject.<init>(JSONObject.java:158)
06-07 11:45:54.943: W/System.err(10310):    at org.json.JSONObject.<init>(JSONObject.java:171)

3 个答案:

答案 0 :(得分:2)

  

我有json响应,但这是标准格式吗?

开头是<,最后是>。所以:

new JSONObject(result.toString().substring(1, result.length() - 2));

或更有可能:

new JSONArray(result.toString().substring(1, result.length() - 2));

因为它的顶层是一个数组。

由于您已删除了原来的<>

由于它的顶层是一个数组,您可能需要JSONArray,而不是JSONObject

new JSONArray(result.toString());

答案 1 :(得分:2)

这是JSONarray

[{"code":"123","rate":"0.1","title":"sss","subtitle":"mmm"},{"code":"456","rate":"0.1","title":"bbb","subtitle":"uuu"}]

尝试解析

 new JSONArray(result.toString())

答案 2 :(得分:1)

首先像这样分配你的json数组

JSONArray jsar=new JSONArray(result);

然后解析像这样的对象

for(int i=0;i<jsar.length;i++)
{
JSONObject jsobj=new JSONObject(jsar[i]);

String strcode=jsobj.get("code");

String strrate=jsobj.get("rate");

String strtitle=jsobj.get("title");

String strsubtitle=jsobj.get("subtitle");
}
希望这会对你有所帮助,