1

サーバーを呼び出すと、その応答はjsonオブジェクトに基づいています。実際、私はJSONオブジェクトを解析する方法を知っていますが、この応答は私には奇妙です。サーバーの応答は次のとおりです。

{"body":"Not Available!","clazz":"SoccerMatchPreview","id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978},"publishedDate":"2012-06-08 17:00:00 +0100","refKey":"SoccerMatchPreview_4fb897be18be8b87f9117595","title":"Poland vs Greece"}

私が必要とする情報は、body、publishedDate、refKey、およびtitleです。JSONオブジェクトに基づいて私が書いたコードは次のとおりです。

JSONObject jObject = new JSONObject(response);
                    JSONArray contestantObjects = jObject.getJSONArray("id");
                    for(int i=0; i<contestantObjects.length(); i++) {
                        mPreview.setBody(contestantObjects.getJSONObject(i).getString("body").toString());
                        mPreview.setPublishedDate(contestantObjects.getJSONObject(i).getString("publishedDate").toString());
                        mPreview.setRefKey(contestantObjects.getJSONObject(i).getString("refKey").toString());
                        mPreview.setTitle(contestantObjects.getJSONObject(i).getString("title").toString());
                    }

ただし、「[]」がないため、JSONオブジェクトではないと思います。したがって、別のコードベースのJSON配列を作成しました。

JSONArray contestantObjects = new JSONArray(response);
                    for(int i=0; i<contestantObjects.length(); i++) {
                        mPreview.setBody(contestantObjects.getJSONObject(i).getString("body").toString());
                        mPreview.setPublishedDate(contestantObjects.getJSONObject(i).getString("publishedDate").toString());
                        mPreview.setRefKey(contestantObjects.getJSONObject(i).getString("refKey").toString());
                        mPreview.setTitle(contestantObjects.getJSONObject(i).getString("title").toString());
                    }

しかし、結果は同じで、Logcatは次のことを示しています。

値{"id":{"timeSecond":1337861978、 "time":1337861978000、 "new":false、 "machine":415106952、 "inc":-2024241794}、 "body": "Not Available!"、 " title ":"ポーランドvsギリシャ "、" publishedDate ":" 2012-06-08 17:00:00 +0100 "、" clazz ":" SoccerMatchPreview "、" refKey ":"SoccerMatchPreview_4fb897be18be8b87f9117595"}タイプorg.json。 JSONObjectをJSONArrayに変換できません

任意の提案をいただければ幸いです。ありがとう

4

1 に答える 1

4
JSONArray contestantObjects = jObject.getJSONArray("id");

エラーはここにidあり、それ自体が複雑なオブジェクトであり、配列ではありません。

"id":{"inc":-2024241794,"machine":415106952,"new":false,"time":1337861978000,"timeSecond":1337861978}

したがって、JSONオブジェクトを取得した後、、、、、、などの個々の属性をid取得できるようになります。incmachinenewtimetimeSecond

JSONObject idObject = ...getJSONObject("id");
String machine = idObject.get("machine");

JSON配列のデータ構造は次のようになります[]。配列を示します。

たとえば、"Animals":["Pig", "Cat", "Dog"]

別の例では、複雑なオブジェクトの配列にすることもできます"Animals":[{"name":"AAA", "blood":"A"}, {"name":"BBB", "blood":"B"}]

編集:これが私がお勧めする良いJSONビジュアライザーです。

http://jsonviewer.stack.hu/

ここに画像の説明を入力してください

于 2012-05-29T02:36:24.450 に答える