jsonlib反序列化map时指定map中对象的类型_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > jsonlib反序列化map时指定map中对象的类型

jsonlib反序列化map时指定map中对象的类型

 2011/9/24 6:31:24  jingua1026  http://jingua1026.iteye.com  我要评论(0)
  • 摘要:importjava.util.HashMap;importjava.util.Map;importnet.sf.json.JSONObject;importnet.sf.json.JsonConfig;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importorg.junit.Test;publicclassJson2MapTest
  • 标签:Map JSON
import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;

public class Json2MapTest {
    public static final Log log = LogFactory.getLog(Json2MapTest.class);

    @Test
    public void testJson2Map() {
        Map<String, User> map = new HashMap<String, User>();
        map.put("user0", new User(0,"user0","user0@apusic.com"));
        map.put("user1", new User(1,"user1","user1@apusic.com"));
        String jsonString = JSONObject.fromObject(map).toString();
        JSONObject jsonObj = JSONObject.fromObject(jsonString);
        JsonConfig jsonCfg = new JsonConfig();
        jsonCfg.setRootClass(Map.class);
        Map<String,Class> classMap = new HashMap<String, Class>();
        classMap.put(".*", User.class);
        jsonCfg.setClassMap(classMap);
        Map<String,User> deserializedMap = (Map<String, User>) JSONObject.toBean(jsonObj,new HashMap(),jsonCfg);
        log.debug(deserializedMap.toString());
    }

}


classMap.put(".*", User.class);指定map中所有key对应的value的类型

输出结果:
{user0=User [email=user0@apusic.com, id=0, name=user0], user1=User [email=user1@apusic.com, id=1, name=user1]}
发表评论
用户名: 匿名