最近项目中使用到了对象嵌套对象(即数组嵌套数数组)的json数据,结构如下:
{
"name": "zhangsan",
"age": "18",
"score": [
{
"year": "2016",
"yuwen": "60",
"shuxue": "60",
"yingyu": "60"
},
{
"year": "2017",
"yuwen": "80",
"shuxue": "80",
"yingyu": "80"
},
{
"year": "2018",
"yuwen": "100",
"shuxue": "100",
"yingyu": "100"
}
]
}
最初编辑的实体类是这样的(省略get、set方法):
然后解析方法如下:
发现获取不到信息,在网上查阅资料整理如下:
1.分层获取:
将获取到的json数据转化为jsonobject,然后根据嵌套在内部的数组名称获取到jsonarray,然后在循环获取其中的数据。这种办法可以获取到嵌套的数据并可以通过get、set方法把数据赋值给实体类,但如果数据过多的话就不方便了。
2.修改实体类:
因为通过fromjson解析的时候不能将json中的score数组解析成List<StudentScoreBean>类型,但我们可以通过添加内部类的方式去解决这个问题,修改后的的StudentBean如下:
public class StudentBean { private String name; private String age; private List<ScoreBean> score; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public List<ScoreBean> getScore() { return score; } public void setScore(List<ScoreBean> score) { this.score = score; } public static class ScoreBean { private String year; private String yuwen; private String shuxue; private String yingyu; public String getYear() { return year; } public void setYear(String year) { this.year = year; } public String getYuwen() { return yuwen; } public void setYuwen(String yuwen) { this.yuwen = yuwen; } public String getShuxue() { return shuxue; } public void setShuxue(String shuxue) { this.shuxue = shuxue; } public String getYingyu() { return yingyu; } public void setYingyu(String yingyu) { this.yingyu = yingyu; } } }
问题解决!
附:如果有json数据的话,可以使用jsonFormat一键生成上述代码。Android studio使用方法:file->settings->plugins->搜索Gsonformat。下载完成后新建一个类,windows下快捷键是alt+insert选择GsonFormat,将json数据复制进去,点击确定就会直接生成实体类。
特别鸣谢:http://sumile.cn/archives/970.html