在android中解析无键JsonArray

在android中解析无键JsonArray,android,json,arrays,Android,Json,Arrays,我有一个json响应,但这是标准格式吗 [{"code":"123","rate":"0.1","title":"sss","subtitle":"mmm"},{"code":"456","rate":"0.1","title":"bbb","subtitle":"uuu"}] 我如何在安卓系统中使用它 new JSONObject(result.toString()) 抛出下面的异常 06-07 11:45:54.943: W/System.err(10310): at org.j

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

[{"code":"123","rate":"0.1","title":"sss","subtitle":"mmm"},{"code":"456","rate":"0.1","title":"bbb","subtitle":"uuu"}]
我如何在安卓系统中使用它

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)
我有一个json响应,但这是标准格式吗

[{"code":"123","rate":"0.1","title":"sss","subtitle":"mmm"},{"code":"456","rate":"0.1","title":"bbb","subtitle":"uuu"}]
这将是没有最后的结果。因此:

new JSONObject(result.toString().substring(1, result.length() - 2));
或者更可能:

new JSONArray(result.toString().substring(1, result.length() - 2));
因为它的顶层是一个数组

由于您已删除了原来的:

因为它的顶层是一个数组,所以您可能需要JSONArray,而不是JSONObject:

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

[{"code":"123","rate":"0.1","title":"sss","subtitle":"mmm"},{"code":"456","rate":"0.1","title":"bbb","subtitle":"uuu"}]
这将是没有最后的结果。因此:

new JSONObject(result.toString().substring(1, result.length() - 2));
或者更可能:

new JSONArray(result.toString().substring(1, result.length() - 2));
因为它的顶层是一个数组

由于您已删除了原来的:

因为它的顶层是一个数组,所以您可能需要JSONArray,而不是JSONObject:

我是杰索纳雷

尝试解析

 new JSONArray(result.toString())
我是杰索纳雷

尝试解析

 new JSONArray(result.toString())

首先像这样分配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");
}
然后像这样解析对象

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");
}

希望这会对您有所帮助。

首先像这样分配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");
}
然后像这样解析对象

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");
}

希望这能对你有所帮助。

你是对的。但问题不在;thanks@Mimad当前位置这些不是以什么方式出现的?这些使它成为无效的JSON,因此您无法解析它。没有它们,它就是有效的JSON,您可以解析它。另外:您可能需要新的JSONArray而不是新的JSONObject,因为它是数组,而不是对象。我已经添加了。这是我在日志中的错误!:D@Mimad:啊,好的。因此,这只是JSONObject与JSONArray之间的事情。你是对的,但问题不是;thanks@Mimad当前位置这些不是以什么方式出现的?这些使它成为无效的JSON,因此您无法解析它。没有它们,它就是有效的JSON,您可以解析它。另外:您可能需要新的JSONArray而不是新的JSONObject,因为它是数组,而不是对象。我已经添加了。这是我在日志中的错误!:D@Mimad:啊,好的。因此,这只是JSONObject与JSONArray的对比。是的,它是有效的。您可以将Json粘贴到其中进行检查验证。您的Json是一个数组而不是一个对象,因此您需要新的JSONArrayresult.toString;是的,它是有效的,您可以粘贴Json进行检查验证您的Json是一个数组而不是一个对象,因此您需要新的JSONArrayresult.toString;