原博客地址:http://blog.csdn.net/harrison2010/article/details/43700991express
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());