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());
  • 相关阅读:
    FileUpload 改变控件显示的文字
    MongoDB:分片(简介 & 自动分片 & 片键)
    MD5加密
    解决查询access数据库含日文出现“内存溢出”问题
    MVC Page分页控件
    Access 执行查询时,抛出“标准表达式中数据类型不匹配”的错误
    WCF 内存入口检查失败 Memory gates checking failed
    键值对集合Dictionary<K,V>根据索引提取数据
    ADO.NET EF 4.2 中的查询缓存(避免查询缓存)
    Unicode解码转换为中文
  • 原文地址:https://www.cnblogs.com/mnn5/p/7465803.html
Copyright © 2011-2022 走看看