0

JavaAndroidコードのTastypie/DjangoJSON応答に問題があります。TastypieAPIへのGEThttpメソッドを実行し、JSONへのhttpresponseを解析します。問題は、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)

tastypieAPIから取得した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/"}]}

tastypieAPIJSON形式がJSONArrayに解析できない理由がわかりません。

4

2 に答える 2

2

これは、JSONがJSONオブジェクトであり、配列ではないためです。値が得られるまでJSONを解析してから、それをJSON配列objectsに変換してみてください。

JSON配列は常に次のようになります。

'[1, 2, 3, 4]'

[]これは、JSON文字列がJSON配列を表すために必要なエンクロージャーであることに注意してください。

于 2012-08-10T14:08:06.823 に答える
2

JSON配列ではなく、JSONオブジェクトのように見えます。

代わりにJSONobjectを与えてみてください。

JSONObject finalresult = new JSONObject(json);

JSON配列は次のとおりです。

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

JSONオブジェクトは

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

これを参照してください:http ://www.json.org/

于 2012-08-10T14:09:29.333 に答える