zoukankan      html  css  js  c++  java
  • 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());
  • 相关阅读:
    安卓机-华为安装charles证书
    sed替换文件内容
    升级php5.3.10到php5.6.30
    js 判断设备
    element-ui框架富文本编辑器
    git从主分支上拉取新分支以及提交代码、合并到主分支
    前端项目初始化
    vue路由点击第二次时报错
    js 数组sort方法根据数组中对象的某一个属性值进行排序
    去除一个数组中与另一个数组中的相同元素
  • 原文地址:https://www.cnblogs.com/mnn5/p/7465803.html
Copyright © 2011-2022 走看看