Gson学习

google gson学习

关键字: json gson java

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

代码
1 1. import java.lang.reflect.Type;
2 2.
3 3. import com.google.gson.JsonElement;
4 4. import com.google.gson.JsonPrimitive;
5 5. import com.google.gson.JsonSerializationContext;
6 6. import com.google.gson.JsonSerializer;
7 7.
8 8. public class UtilDateSerializer implements JsonSerializer<java.util.Date> {
9 9.
10 10. @Override
11 11. public JsonElement serialize(java.util.Date src, Type typeOfSrc,
12 12. JsonSerializationContext context) {
13 13. return new JsonPrimitive(src.getTime());
14 14. }
15 15.
16 16. }
序列化
1 1. /**
2 2. * 序列化方法
3 3. * @param bean
4 4. * @param type
5 5. * @return
6 6. */
7 7. public static String bean2json(Object bean, Type type) {
8 8. Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.class, new UtilDateSerializer())
9 9. .setDateFormat(DateFormat.LONG).create();
10 10. return gson.toJson(bean);
11 11. }
12 12.
13 13. /**
14 14. * 反序列化方法
15 15. * @param json
16 16. * @param type
17 17. * @return
18 18. */
19 19. public static <T> T json2bean(String json, Type type) {
20 20. Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.class, new UtilDateDeserializer())
21 21. .setDateFormat(DateFormat.LONG).create();
22 22. return gson.fromJson(json, type);
23 23. }
现在开始测试
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]]

对于GsonBuilder详见:

 http://google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/GsonBuilder.html

 

 

*注:TestBean就是一个带id、name、birthday的javabean,就不在这里贴代码了

posted @ 2010-11-11 13:17  真悲剧  阅读(5847)  评论(1编辑  收藏  举报