JSON-LIB json与javabean对象的转换

来源:互联网 发布:淘宝哪里买阿普唑仑片 编辑:程序博客网 时间:2024/05/08 07:08

1. Java到json转换时可通过JsonConfig来控制。

Java代码  收藏代码
  1. JSONSerializer.toJSON(javaobj, jsonConfig)=>jsonobj  
  2. //实际方法为:  
  3. json = JSONArray.fromObject( object, jsonConfig );  
  4. json = JSONObject.fromObject( object, jsonConfig );  
  5.   
  6.   
  7. setJsonPropertyFilter(PropertyFilter);  //设置哪些字段要转  
  8. registerJsonBeanProcessor(class, JsonBeanProcessor);   
  9. registerJsonValueProcessor(class, JsonValueProcessor); //处理Bean对象的属性值的转换  

2. json-lib是通过Morpher来jsonstr转换对象,对于不知道类型的转为 MorpherDynBean。 
对于复杂的对象想通过Morpher来转就比较困难。可通过jsonConfig 。

Java代码  收藏代码
  1. JSONSerializer.toJSON(str, c) => JSONObject或JSONArray  
  2. 再根据如下转成对象  
  3. JSONSerializer.toJava(jsonObject, jsonConfig)=>Object  
  4. //实际方法为:  
  5. JSONObject.toBean(jsonObject, jsonConfig) ==> Object;  
  6. JSONArray.toArray(jsonObject, jsonConfig) ==> Object;  
  7. JSONArray.toList(jsonObject, jsonConfig) ==> List;  
  8.   
  9. setRootClass(bean.class);           // 设置要转成的类,会根据属性的类型来转  
  10. BeanB {BeanA a;  BeanA[] as}     // 转时会将DynBean转为BeanA  
  11. setClassMap() // {key, class}          //key中对应的类  
  12. setArrayMode() //设置JSONArray转成的形式有三种 MODE_OBJECT_ARRAY, MODE_LIST or MODE_SET  
  13. morpherRegistry.registerMorpher( dynaMorpher );    

如date: 
Java代码  收藏代码
  1. JSONUtils.getMorpherRegistry().registerMorpher(  
  2. new DateMorpher(new String[]{ "yyyy-MM-dd HH:mm:ss",  "yyyy-MM-dd"  
  3.           }));  


在toBean()时用到Morpher: 
Java代码  收藏代码
  1. //对象:  
  2. JSONUtils.getMorpherRegistry().registerMorpher(new BeanMorpher( pd.getPropertyType(),JSONUtils.getMorpherRegistry() ) );  
  3. setProperty( root, key, JSONUtils.getMorpherRegistry().morph( pd.getPropertyType(), value ), jsonConfig );  
  4.   
  5. //数组:  
  6. ObjectArrayMorpher beanMorpher = new ObjectArrayMorpher(  
  7. new BeanMorpher( innerType, JSONUtils.getMorpherRegistry() ) );  
  8. JSONUtils.getMorpherRegistry().registerMorpher( beanMorpher );  
  9. array = JSONUtils.getMorpherRegistry().morph(  
  10.  Array.newInstance( innerType, 0 ).getClass(), array );  
  11. setProperty( root, key, array, jsonConfig );  

0 0
原创粉丝点击