3

Androidアプリで必要なデータを含むjson文字列を返すWebシステムがあります。文字列は次のとおりです。

[
    {"id":1,
    "title":"Remove ViRuSeS",
    "tagline":"Remove ViRuSeS",
    "body":"Body",
    "image":"index.jpg",
    "steps":[
            {"id":2,
            "title":"Step 1",
            "body":"Download Things!",
            "position":1}
            ]
    }
]

オブジェクトの配列を返す必要があります。オブジェクトのアイテムの1つもアイテムの配列です。

私はgsonに精通しており、過去にこれを機能させてきましたが、常にデータをオブジェクトだけに単純化する必要があり、データを取得するために複数の呼び出しを行う必要がありました。

可能なすべての値をクラスにマップし直すことなく、これを行うための良い方法はありますか?

私の最後の試みは、これから何か単純なものを取得しようとすることでありNullPointerException、これらの行の2番目に取得しています:

userDet = new JSONObject(string);
JSONArray userDetJson = userDet.getJSONArray("Steps");
4

2 に答える 2

6

「ステップ」ではなく「ステップ」変更すると、修正されます。

userDet = new JSONObject(string);
JSONArray userDetJson = userDet.getJSONArray("steps");

完全な解析方法:

JSONArray mainArray = new JSONArray(json);
for (int i = 0 ; i < mainArray.length() ; i ++)
{
    JSONObject currentItem = array.getJSONObject(i);
    String title = currentItem.getString("title");
    String body = currentItem.getString("body ");
    ....
    JSONArray currentItemStepsArray = currentItem.getJSONArray("steps"); 
    for (int j = 0 ; j < currentItemStepsArray.length() ; j ++)
    {
        ....
    }
}
于 2013-03-16T19:42:23.340 に答える
2

ここで、これを試してください:

JSONArray topLevelArr = new JSONArray(json);
JSONArray stepArr = topLevelArr.getJSONObject(0).getJSONArray("steps");
于 2013-03-16T19:45:13.523 に答える