1.导包结构~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.Date格式处理器
// 值处理器 public class JSON_Processor implements JsonValueProcessor{ // 数组处理 public Object processArrayValue(Object value, JsonConfig jsonConfig) { return value; } // 对象处理 public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { if(value instanceof Date){ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date)value); } return value; } }
3.Object ----> JSON
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerJsonValueProcessor(Date.class,new JSON_Processor()); // 复合对象 System.out.println(JSONObject.fromObject(entity,jsonConfig)); // Map System.out.println(JSONObject.fromObject(map)); // Array System.out.println(JSONArray.fromObject(array)); // Set System.out.println(JSONArray.fromObject(set)); // List System.out.println(JSONArray.fromObject(list));
4.JSON ---> Object
Bean
entity = (Entity) JSONObject.toBean( JSONObject.fromObject(entity), // 将 【Bean】 转换为 JSON ,作为【测试数据】 Entity.class);
Map
//先往注册器中注册变换器,需要用到ezmorph包中的类 MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry(); Morpher dynaMorpher = new BeanMorpher( Entity.class, morpherRegistry); morpherRegistry.registerMorpher( dynaMorpher ); // 从JSON字符串 取得 【变体动态对象】的Map, Map 中每个 元素为 【net.sf.ezmorph.bean.MorphDynaBean】 Map<String, Entity> dynamic_map = (Map<String, Entity>) JSONObject.toBean( JSONObject.fromObject(map), // 此处用 【map】 转换后的 JSON 字符串 用作 【测试数据】 Map.class ); // 还原 【map】 Map<String, Entity> map = new HashMap<String, Entity>(); for(Iterator ii = dynamic_map.entrySet().iterator();ii.hasNext();){ Entry<String, Entity> entry = (Entry<String, Entity>)ii.next(); map.put(entry.getKey(), (Entity) morpherRegistry.morph( Entity.class, entry.getValue() )); }
List
list = (List<Entity>) JSONArray.toCollection( JSONArray.fromObject(list), //此处用 【list】 转换后的 JSON 字符串 用作 【测试数据】 Entity.class);
Array
array = (Entity[]) JSONArray.toArray( JSONArray.fromObject(array) //此处用 【array】 转换后的 JSON 字符串 用作 【测试数据】 ,Entity.class);
Set
set = new HashSet<Entity>( (List<Entity>) JSONArray.toCollection( JSONArray.fromObject(set) //此处用 【set】 转换后的 JSON 字符串 用作 【测试数据】 ,Entity.class));