原博客地址:http://blog.csdn.net/harrison2010/article/details/43700991
1 方式一 ??2 /** ?3 ???* Creates a JSONDynaBean from a JSONObject. ?4 ???*/ ??5 ??public static Object toBean( JSONObject jsonObject ) ???6 返回的数据类型明显不是我们常用的数据类型 ??7 ??????8 方式二 ??9 /** 10 ???* Creates a bean from a JSONObject, with a specific target class.<br> 11 ???*/ ?12 public static Object toBean( JSONObject jsonObject, Class beanClass ) ??13 ??14 方式三(常用) ?15 /** 16 ???* Creates a bean from a JSONObject, with a specific target class.<br> 17 ???* If beanClass is null, this method will return a graph of DynaBeans. Any 18 ???* attribute that is a JSONObject and matches a key in the classMap will be 19 ???* converted to that target class.<br> 20 ???* The classMap has the following conventions: 21 ???* <ul> 22 ???* <li>Every key must be an String.</li> 23 ???* <li>Every value must be a Class.</li> 24 ???* <li>A key may be a regular expression.</li> 25 ???* </ul> 26 ???*/ ?27 ??public static Object toBean( JSONObject jsonObject, Class beanClass, Map classMap ) ??28 ??29 ??30 方式四 ?31 /** 32 ???* Creates a bean from a JSONObject, with the specific configuration. 33 ???*/ ?34 ??public static Object toBean( JSONObject jsonObject, JsonConfig jsonConfig ) ?35 方式2其实最终调用的就是方式四,看来jsonConfig对象很重要,决定了最后返回的数据类型,当然还远不至于这些。 ?36 方式3也最终调用的是方式4 ?37 ??38 ??39 方式五(常用) ?40 /** 41 ???* Creates a bean from a JSONObject, with the specific configuration. 42 ???*/ ?43 ??public static Object toBean( JSONObject jsonObject, Object root, JsonConfig jsonConfig ) ?44 直接对已有对象的处理,把json的数据写入到已有对象中。 ?45 ??46 比较常用的方式三与方式五 ?47 例子:接着bean to json的代码 ?48 ??49 //二 json to object ?50 ???????51 ?????JSONObject jsonObject = JSONObject.fromObject(returnString); ?52 ?????Object returnObject = null; ?53 ?????//办法一 class+map config的方式三 ?54 ?????Map config = new ?HashMap(); ?55 ?????config.put("addresses", Address.class); ?56 ?????config.put("sameTest", Person.class); ?57 ?????returnObject = JSONObject.toBean(jsonObject, Person.class,config); ?58 ?????System.out.println(returnObject); ?59 ???????60 ?????//办法二 object+JsonConfig方式五 ?61 ?????p = new Person(); ?62 ?????JsonConfig jc = new JsonConfig(); ?63 ?????jc.setClassMap(config); ?64 ?????jc.setNewBeanInstanceStrategy(new NewBeanInstanceStrategy() { ?65 ????????@Override ?66 ????????public Object newInstance(Class target, JSONObject source) ?67 ????????????????throws InstantiationException, IllegalAccessException, ?68 ????????????????SecurityException, NoSuchMethodException, InvocationTargetException { ?69 ??????????????if( target != null ){ ?70 ????????????????????if(target.getName().equals(Map.class.getName())){ ?71 ????????????????????????return new HashMap(); ?72 ????????????????????} ?73 ????????????????????return NewBeanInstanceStrategy.DEFAULT.newInstance(target, source); ?74 ?????????????????} ?75 ??????????????76 ????????????return null; ?77 ????????} ?78 ????}); ?79 ?????JSONObject.toBean(jsonObject, p, jc); ?80 ?????System.out.println(p.getAddresses().get(0).getAddress());
json to bean(JSONObject类详解)
原文地址:http://www.cnblogs.com/mnn5/p/7465803.html