package com.alibaba.json.bvt.typeRef;
import java.util.HashMap;
import java.util.Map;
import org.junit.Assert;
import junit.framework.TestCase;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
public class TypeReferenceTest extends TestCase {
@SuppressWarnings("rawtypes")
public void test_0() throws Exception {
System.out.println(System.getProperties());
String text;
{
Map<String, Bean> map = new HashMap<String, Bean>();
map.put("a", new Bean(123, "马加爵"));
map.put("b", new Bean(234, "药家鑫"));
map.put("c", new Bean(456, "刘大伟"));
text = JSON.toJSONString(map);
}
System.out.println(text);
{
Map<String, Bean> map = JSON.parseObject(text, new TypeReference<Map<String, Bean>>() {}); // 注意这里
Assert.assertEquals(3, map.size());
Assert.assertEquals(123, ((Bean) map.get("a")).getId());
Assert.assertEquals(234, ((Bean) map.get("b")).getId());
Assert.assertEquals(456, ((Bean) map.get("c")).getId());
Assert.assertEquals("马加爵", ((Bean) map.get("a")).getName());
Assert.assertEquals("药家鑫", ((Bean) map.get("b")).getName());
Assert.assertEquals("刘大伟", ((Bean) map.get("c")).getName());
}
{
Map map = JSON.parseObject(text, new TypeReference<Map>() {}); // 注意这里
Assert.assertEquals(3, map.size());
Assert.assertEquals(123, ((JSONObject) map.get("a")).get("id"));
Assert.assertEquals(234, ((JSONObject) map.get("b")).get("id"));
Assert.assertEquals(456, ((JSONObject) map.get("c")).get("id"));
Assert.assertEquals("马加爵", ((JSONObject) map.get("a")).get("name"));
Assert.assertEquals("药家鑫", ((JSONObject) map.get("b")).get("name"));
Assert.assertEquals("刘大伟", ((JSONObject) map.get("c")).get("name"));
}
{
Map map = JSON.parseObject(text, new TypeReference<JSONObject>() {}); // 注意这里
Assert.assertEquals(3, map.size());
Assert.assertEquals(123, ((JSONObject) map.get("a")).get("id"));
Assert.assertEquals(234, ((JSONObject) map.get("b")).get("id"));
Assert.assertEquals(456, ((JSONObject) map.get("c")).get("id"));
Assert.assertEquals("马加爵", ((JSONObject) map.get("a")).get("name"));
Assert.assertEquals("药家鑫", ((JSONObject) map.get("b")).get("name"));
Assert.assertEquals("刘大伟", ((JSONObject) map.get("c")).get("name"));
}
}
public static class Bean {
private int id;
private String name;
public Bean(){
}
public Bean(int id, String name){
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}