第五步骤:多层实体类处理。
1、实体类:set和get方法自己生成(set和get方法必须有)
public class Person private String id; private Person pserson;
}
2、关键测试代码:实体类Person 属性还是Person 时json解析为实体类时一次搞定。
import net.sf.json.JSONObject;
public static void main(String[] args) {
Person p1 = new Person(); p1.setId("111");
Person p2 = new Person(); p2.setId("222");
Person p3 = new Person(); p3.setId("333");
p1.setPserson(p2);
p2.setPserson(p3);
JSONObject jsonp = JSONObject.fromObject(p1);
System.out.println(jsonp);
Object objp = JSONObject.toBean(jsonp,Person.class);
Person p4 = (Person) objp;
Person p5 = p4.getPserson();
Person p6 = p5.getPserson();
System.out.println(p6.getId());
}
3、map属性中存放map时比较麻烦需要使用MorphDynaBean 或者get一次解析一次。
public static void main(String[] args) {
Map map1 = new HashMap();
Map map2 = new HashMap();
Map map3 = new HashMap();
map3.put("value","Male");
map2.put("gender",map3);
map1.put("attributes",map2);
JSONObject json = JSONObject.fromObject(map1);
System.out.println(json);
Object obj2 = JSONObject.toBean(json,Map.class);
Map map = (Map) obj2;
MorphDynaBean map4 = (MorphDynaBean) map.get("attributes");
MorphDynaBean map5 = (MorphDynaBean) map4.get("gender");
String male = (String) map5.get("value");
System.out.println(male);
//或者使用get一次解析一次
JSONObject json3 = JSONObject.fromObject(json.get("attributes"));
Map map6 = (Map) JSONObject.toBean(json3,Map.class);
JSONObject json4 = JSONObject.fromObject(json3.get("gender"));
Map map7 = (Map) JSONObject.toBean(json4,Map.class);
System.out.println(map7.get("value"));
}