3

我有一个 Web 系统,它返回一个 json 字符串,其中包含我在 Android 应用程序中需要的数据。字符串如下:

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

它应该返回一个对象数组,其中一个对象的项也是一个项数组。

我对 gson 很熟悉,并且过去也做过这项工作,但我总是不得不将我的数据简化为一个对象,这使我最终不得不多次调用来获取数据。

有没有一种好方法可以做到这一点,而不必将所有可能的值映射回类?

我的最后一次尝试是尝试从中得到一些简单的东西,并NullPointerException在其中的第二行中得到一个:

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

2 回答 2

6

将其更改为"steps"而不是"Steps",它将修复它:

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 回答