将json数组转成list,list中的对象,还包含有其它对象
(一)如下实体类:所有实体省略 get() 、set()方法
1、学校类
public class School{
private String name; //学校名
private String pos; //学校地址
private List<Classes> classes; //学校里的班级
}
2、班级类:
public class Classes{
private String name; //班级名
private String number; //班级人数
}
(二)如下json字符串(仅是举例,不用太关心数据细节)
{
"school_list": [{
"name": "北京大学",
"pos": "北京",
"classes": [{
"name": "生物工程2010级一班"
"number": 30
},
{
"name": "软件工程2010级一班"
"number": 30
},
]
},
{
"name": "四川大学",
"pos": "成都",
"classes": [{
"name": "互联网2010级一班"
"number": 35
},
{
"name": "计科2010级一班"
"number": 15
},
]
}
]
}
(三)、json转换
//上面的json字符串
String jsonStr="";
//转成json对象(com.alibaba.fastjson.JSON.parseObject)
JSONObject jsonObj=JSONObject.parseObject(jsonStr);
//获取json对象中,键school_list的值
String schoolListStr = jsonObj.getString("school_list");
//将json字符串转成json数组(net.sf.json.JSONArray.fromObject)
JSONArray jsonArr = JSONArray.fromObject(schoolListStr);
@SuppressWarnings("rawtypes")
Map<String, Class> classMap = new HashMap<String, Class>();
//将json数组转成list过程中,将json对象中的键为classes的值也转换成指定对象
classMap.put("classes", Classes.class);
//设置json转换配置(net.sf.json.JSONArray.toList)
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setClassMap(classMap);
//转换(net.sf.json.JSONArray.toList)
@SuppressWarnings("unchecked")
List<School> vessel_list = JSONArray.toList(jsonArr, new School(),jsonConfig);