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());

 

posted @ 2017-09-02 09:33  Somnus、N  阅读(11387)  评论(0编辑  收藏  举报