json to bean(JSONObject类详解)
原博客地址: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());