带有tastypie JSON结果的JSON格式错误

时间:2012-08-10 14:06:39

标签: java json tastypie

我的Java Android代码中存在Tastypie / Django JSON响应问题。我对一个Tastypie API执行GET http方法,然后将httpresponse解析为JSON。问题在于,当我使用json响应创建JSONArray时,这会引发异常。

JSONTokener tokener = new JSONTokener(json);
finalResult = new JSONArray(json);

我收到下一条错误消息:

System.err(27193): org.json.JSONException: Value {"objects 
[{"id":"1","resource_uri":"\/api\/v1\/user\/1\/","od_user":"Usuario administrador del 
sitio","nick":"Admin","reg_date":"2012-08-07T15:39:20.706060+00:00"},
{"id":"2","resource_uri":"\/api\/v1\/user\/2\/","od_user":"user 
test","nick":"test1","reg_date":"2012-08-08T10:44:50+00:00"}],"meta":
{"limit":20,"previous":null,"offset":0,"total_count":2,"next":null}} of type 
org.json.JSONObject cannot be converted to JSONArray
W/System.err(27193):    at org.json.JSON.typeMismatch(JSON.java:111)
W/System.err(27193):    at org.json.JSONArray.<init>(JSONArray.java:91)

我从tastypie API获得的JSON存档是:

{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 2}, "objects": [{"id": "1", "nick": "Admin", "od_user": "Usuario administrador del sitio", "reg_date": "2012-08-07T15:39:20.706060+00:00", "resource_uri": "/api/v1/user/1/"}, {"id": "2", "nick": "test1", "od_user": "user test", "reg_date": "2012-08-08T10:44:50+00:00", "resource_uri": "/api/v1/user/2/"}]}

我不知道为什么tastypie API JSON格式无法解析为JSONArray。

2 个答案:

答案 0 :(得分:2)

那是因为您的JSON是JSON对象而不是数组。您可以解析JSON,直到获得objects值,然后尝试将 转换为JSON数组。

JSON数组总是如下:

'[1, 2, 3, 4]'

请注意,[]是JSON字符串表示JSON数组所需的附件。

答案 1 :(得分:2)

它看起来像一个JSON对象而不是一个JSON数组。

尝试改为给予JSONobject。

JSONObject finalresult = new JSONObject(json);

JSON数组是:

["limit","next","offset"]

JSON对象是

{"limit":20, "next":null,"offset":0}

参考:http://www.json.org/