因为被JSON转换对象折磨了好几个小时,所以今天就来好好谈一谈Json,众所周知json现在最常用的传值方式,经常需要把从json串中取出数据放入对象中。要是一层就没什么好说的了,如果遇到两层以上的也不要担心,利用JSONObject和JSONArray完全没问题。
今天说的情况是一个对象,对象中的属性包括list集合,集合的泛型是对象,将这个对象放入我们普遍定义的ServiceResult中,然后转换成json字符串返回,现在就是要解析这个json串,拿到最小对象的字段。
切记:只有当当前json串为最小对象单元时才能将他转换为实际对象,否则你将会看到Morphdynabean这样的对象,下图为示例
其实这个时候,就需要我们拿到这个JSONArray,然后对他做循环,遍历JSONArray中的每个JSONObject,转换为对应的实际对象即可
JSONObject jsonObject = JSONObject.fromObject(body1);
JSONObject json=jsonObject.getJSONObject("data");
JSONArray jsonArray=json.getJSONArray("needChangeList");
List<TargetInfo> lists=new ArrayList<>();
if (jsonArray!=null&&jsonArray.size()!=0){
for (int i=0;i<jsonArray.size();i++){
JSONObject jsonObject1= (JSONObject) jsonArray.get(i);
TargetInfo targetInfo= (TargetInfo) JSONObject.toBean(jsonObject1,TargetInfo.class);
lists.add(targetInfo);
}
}
这样就OK了,就可以开心的找到你要的东西了,还有一点叮嘱:一点一点深入去找,分清是JSONObject还是JSONArray,需要用不同的方法哦!