JSON

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));

 

posted @ 2014-04-11 16:59  聆听自由  阅读(253)  评论(0编辑  收藏  举报