[转载]google gson使用 - 七郎 - 博客园

baacloud免费翻墙vpn注册使用

[转载]google gson使用 – 七郎 – 博客园.

Gson网址http://code.google.com/p/google-gson/
1.简单的处理list和map


Gson gson = new Gson();
List testList = new ArrayList();
testList.add("first");
testList.add("second");
String listToJson = gson.toJson(testList);
System.out.println(listToJson);     
//prints ["first","second"]
  
Map testMap = new HashMap();
testMap.put("id", "id.first");
testMap.put("name","name.second");
String mapToJson = gson.toJson(testMap);
System.out.println(mapToJson);  
//prints {"id":"id.first","name":"name.second"}

2.处理带泛型的集合


List<TestBean> testBeanList = new ArrayList<TestBean>();
TestBean testBean = new TestBean();
testBean.setId("id");
testBean.setName("name");
testBeanList.add(testBean);
          
java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<TestBean>>() {
}.getType();
String beanListToJson = gson.toJson(testBeanList,type);
System.out.println(beanListToJson);
//prints [{"id":"id","name":"name"}]
          
List<TestBean> testBeanListFromJson = gson.fromJson(beanListToJson, type);
System.out.println(testBeanListFromJson);
//prints [TestBean@1ea5671[id=id,name=name,birthday=<null>]]

map等其他集合类型同上

3.Date类型转化

先写工具类

1. import java.lang.reflect.Type; 
2. 
3. import com.google.gson.JsonDeserializationContext; 
4. import com.google.gson.JsonDeserializer; 
5. import com.google.gson.JsonElement; 
6. import com.google.gson.JsonParseException; 
7. 
8. publicclass UtilDateDeserializer implements JsonDeserializer<java.util.Date> { 
9. 
10. @Override 
11. public java.util.Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) 
12. throws JsonParseException { 
13. returnnew java.util.Date(json.getAsJsonPrimitive().getAsLong()); 
14. } 
15. }
代码

11. import java.lang.reflect.Type; 
22. 
33. import com.google.gson.JsonElement; 
44. import com.google.gson.JsonPrimitive; 
55. import com.google.gson.JsonSerializationContext; 
66. import com.google.gson.JsonSerializer; 
77. 
88. publicclass UtilDateSerializer implements JsonSerializer<java.util.Date> { 
99. 
1010. @Override 
1111. public JsonElement serialize(java.util.Date src, Type typeOfSrc, 
1212. JsonSerializationContext context) { 
1313. returnnew JsonPrimitive(src.getTime()); 
1414. } 
1515. 
1616. }
序列化

11. /** 
2. * 序列化方法 
3. * @param bean 
4. * @param type 
5. * @return 
6. */ 
77. publicstatic String bean2json(Object bean, Type type) { 
88. Gson gson =new GsonBuilder().registerTypeAdapter(java.util.Date.class, new UtilDateSerializer()) 
99. .setDateFormat(DateFormat.LONG).create(); 
1010. return gson.toJson(bean); 
1111. } 
1212. 
1313. /** 
14. * 反序列化方法 
15. * @param json 
16. * @param type 
17. * @return 
18. */ 
1919. publicstatic<T> T json2bean(String json, Type type) { 
2020. Gson gson =new GsonBuilder().registerTypeAdapter(java.util.Date.class, new UtilDateDeserializer()) 
2121. .setDateFormat(DateFormat.LONG).create(); 
2222. return gson.fromJson(json, type); 
2323. }
现在开始测试

1# List<TestBean> testBeanList =new ArrayList<TestBean>(); 
2# TestBean testBean =new TestBean(); 
3# testBean.setId("id"); 
4# testBean.setName("name"); 
5# testBean.setBirthday(new java.util.Date()); 
6# testBeanList.add(testBean); 
7# 
8# java.lang.reflect.Type type =new com.google.gson.reflect.TypeToken<List<TestBean>>() { 
9# }.getType(); 
10# String beanListToJson = bean2json(testBeanList, type); 
11# System.out.println("beanListToJson:"+ beanListToJson); 
12# //prints [{"id":"id","name":"name","birthday":1256531559390}] 
13# 
14# List<TestBean> testBeanListFromJson = json2bean(beanListToJson, type); 
15# System.out.println(testBeanListFromJson); 
16# //prints [TestBean@77a7f9[id=id,name=name,birthday=Mon Oct 26 12:39:05 CST 2009]]
赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏