我有一个Web系统,它返回一个json字符串,其中包含我在Android App中需要的数据。字符串如下:
[
{"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");
答案 0 :(得分:5)
将其更改为“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 ++)
{
....
}
}
答案 1 :(得分:2)
在这里,试试这个:
JSONArray topLevelArr = new JSONArray(json);
JSONArray stepArr = topLevelArr.getJSONObject(0).getJSONArray("steps");