java和json对象间转换

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  //将json解析成复合类型对象, 包含List

  @Test

  public void testJSONToBeanHavaList(){

  String json = “{list:[{name:’test1′},{name:’test2′}],map:{test1:{name:’test1′},test2:{name:’test2′}}}”;

  // String json = “{list:[{name:’test1′},{name:’test2′}]}”;

  Map classMap = new HashMap();

  classMap.put(”list”, Person.class);

  MyBeanWithPerson diyBean = (MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class , classMap);

  System.out.println(diyBean);

  List list = diyBean.getList();

  for(Object o : list){

  if(o instanceof Person){

  Person p = (Person)o;

  System.out.println(p.getName());

  }

  }

  }

  //将json解析成复合类型对象, 包含Map

  @Test

  public void testJSONToBeanHavaMap(){

  //把Map看成一个对象

  String json = “{list:[{name:’test1′},{name:’test2′}],map:{testOne:{name:’test1′},testTwo:{name:’test2′}}}”;

  Map classMap = new HashMap();

  classMap.put(”list”, Person.class);

  classMap.put(”map”, Map.class);

  //使用暗示,直接将json解析为指定自定义对象,其中List完全解析,Map没有完全解析

  MyBeanWithPerson diyBean = (MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class , classMap);

  System.out.println(diyBean);

  System.out.println(”do the list release”);

  List<Person> list = diyBean.getList();

  for(Person o : list){

  Person p = (Person)o;

  System.out.println(p.getName());

  }

  System.out.println(”do the map release”);

  //先往注册器中注册变换器,需要用到ezmorph包中的类

  MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry();

  Morpher dynaMorpher = new BeanMorpher( Person.class, morpherRegistry);

  morpherRegistry.registerMorpher( dynaMorpher );

  Map map = diyBean.getMap();

  /*这里的map没进行类型暗示,故按默认的,里面存的为net.sf.ezmorph.bean.MorphDynaBean类型的对象*/

  System.out.println(map);

  /*输出:

  {testOne=net.sf.ezmorph.bean.MorphDynaBean@f73c1[

  {name=test1}

  ], testTwo=net.sf.ezmorph.bean.MorphDynaBean@186c6b2[

  {name=test2}

  ]}

  */

  List<Person> output = new ArrayList();

  for( Iterator i = map.values()。iterator(); i.hasNext(); ){

  //使用注册器对指定DynaBean进行对象变换

  output.add( (Person)morpherRegistry.morph( Person.class, i.next() ) );

  }

  for(Person p : output){

  System.out.println(p.getName());

  /*输出:

  test1

  test2

  */

  }

  }

  }

  5.下面提供上面例子所需的资源,包括jar包和代码

  /Files/mailingfeng/json-lib/json-lib用例所需jar包和java类。rar

[1][2]

而这些目标凝结成希望的萌芽,在汗水与泪水浇灌下,绽放成功之花。

java和json对象间转换

相关文章:

你感兴趣的文章:

标签云: