• 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());
  • 相关阅读:
    Nginx配置文件详解
    JVM调优—性能分析神器-JProfiler详解
    Navicat Premium 15破解
    Nginx配置反向代理,负载均衡,动静分离,高可用
    Nginx安装和常用命令
    Spring中ApplicationContextAware的作用
    java中发起http和https请求
    MySql高可用架构
    matlab画3维meshgrid/plot3/mesh/surf的用法
    如何规范地编写一个MATLAB函数文件
  • 原文地址:https://www.cnblogs.com/mnn5/p/7465803.html
Copyright © 2020-2023  润新知