Google Gson解析Json数据应用实例
1.需要的Jar包
1) Google Gson(gson-xxx.jar)下载地址:http://code.google.com/p/google-gson/downloads/list
2)JUnit4
2. 应用实例代码
下载地址:http://download.csdn.net/source/3499627
包括如下类:
1)普通JavaBean类/带日期属性的JavaBean类:JavaBean.java/DateBean.java
2)日期序列/反序列工具类:DateSerializerUtils.java、DateDeserializerUtils.java
3)测试类GsonTester.java
具体代码:
1)JavaBean类/DateBean类
JavaBean属性:String id、String name、int age、String addr;
DateBean属性:String id、String name、int age、java.util.Date date;
2)
DateSerializerUtils.java
package
com.lupeng.javase.json.util; import
java.lang.reflect.Type; import
java.util.Date; import
com.google.gson.JsonElement; import
com.google.gson.JsonPrimitive; import
com.google.gson.JsonSerializationContext; import
com.google.gson.JsonSerializer; /** * 日期解序列实用工具类 * @author Lupeng * @date 2011-08-06 */ public class
DateSerializerUtils implements
JsonSerializer<java.util.Date>{ @Override public
JsonElement serialize(Date date, Type type, JsonSerializationContext content) { return new
JsonPrimitive(date.getTime()); } } |
DateDeserializerUtils.java
package
com.lupeng.javase.json.util; import
java.lang.reflect.Type; import
com.google.gson.JsonDeserializationContext; import
com.google.gson.JsonDeserializer; import
com.google.gson.JsonElement; import
com.google.gson.JsonParseException; /** * 日期序列化实用工具类 * @author Lupeng * @date 2011-08-06 */ public class
DateDeserializerUtils implements
JsonDeserializer<java.util.Date>{ @Override public
java.util.Date deserialize(JsonElement json, Type type, JsonDeserializationContext context) throws
JsonParseException { return new
java.util.Date(json.getAsJsonPrimitive().getAsLong()); } } |
3)测试类GsonTester.java
package
com.lupeng.javase.apps.json; import
java.text.DateFormat; import
java.util.ArrayList; import
java.util.Date; import
java.util.HashMap; import
java.util.List; import
java.util.Map; import
org.junit.Before; import
org.junit.Test; import
com.google.gson.Gson; import
com.google.gson.GsonBuilder; import
com.lupeng.javase.json.bean.DateBean; import
com.lupeng.javase.json.bean.JavaBean; import
com.lupeng.javase.json.util.DateDeserializerUtils; import
com.lupeng.javase.json.util.DateSerializerUtils; /** * Google Gson解析Json数据实例 * * 1.Bean、Json转换 testBeanJson() * 2.List -> Json转换 testList2Json() * 3.泛型List、Json相互转换 testGenericList2Json() * 4.Map -> Json转换 testMap2Json() * 5.泛型Map、Json相互转换 testGenericMap2Json() * 6.带日期属性Bean、Json转换 testDateBeanJson() * 7.带日期属性泛型List、Json转换 *
testDateGenericListJson() * * @author Lupeng * @create
2011-08-05 * @modify
2011-08-06 */ @SuppressWarnings("unchecked") public class
GsonTester { private
Gson gson = null; private
GsonBuilder gsonBuilder = null; @Before public void
setUp() { gson = new
Gson(); gsonBuilder = new
GsonBuilder(); } /** * JavaBean、Json相互转换 */ @Test public void
testBeanJson() { JavaBean bean = new
JavaBean("1001", "scott",
20, "TL"); // Bean -> Json String json = gson.toJson(bean); System.out.println(json); // Json -> Bean bean = gson.fromJson(json,
JavaBean.class); System.out.println(bean); } /** * List转换成Json字符串 */ @Test public void
testList2Json() { // List List list = new
ArrayList(); for(int i
= 0; i < 5; i++) { list.add("element" +
i); } System.out.println(list); // List -> Json String json = gson.toJson(list); System.out.println(json); } /** * 泛型List、Json相互转换 */ @Test public void
testGenericListJson() { // 泛型List List<JavaBean> list = new
ArrayList<JavaBean>(); for(int i
= 0; i < 3; i++) { JavaBean user = new
JavaBean("100" +
i, "name" +
i, 20 + i, "BJ" + i); list.add(user); } System.out.println(list); // 泛型List
-> Json java.lang.reflect.Type type = new
com.google.gson.reflect.TypeToken<List<JavaBean>>(){}.getType(); String json = gson.toJson(list,
type); System.out.println(json); // Json -> 泛型List List<JavaBean> users = gson.fromJson(json.toString(),
type); System.out.println(users); } /** * Map转换成Json字符串 */ @Test public void
testMap2Json() { // Map数据 Map map = new
HashMap(); map.put("id", "1001"); map.put("name", "scott"); map.put("age",
20); map.put("addr", "BJ"); System.out.println(map); // Map -> Json String json = gson.toJson(map); System.out.println(json); } /** * 泛型Map、Json相互转换 */ @Test public void
testGenericMapJson() { // 泛型Map数据 Map<String, JavaBean> map = new
HashMap<String, JavaBean>(); for(int i
= 0; i < 5; i++) { JavaBean user = new
JavaBean("100" +
i, "name" +
i, 20 + i, "LN" + i); map.put("100" +
i, user); } System.out.println(map); // 泛型Map
-> Json java.lang.reflect.Type type = new
com.google.gson.reflect.TypeToken<Map<String,
JavaBean>>(){}.getType(); String json = gson.toJson(map,
type); System.out.println(json); // Json -> Map Map<String, JavaBean> users = gson.fromJson(json.toString(),
type); System.out.println(users); } /** * 带日期类型Bean、Json相互转换 */ @Test public void
testDateBeanJson() { // 日期Bean数据 DateBean bean = new
DateBean("1001", "scott",
20, new Date()); // Bean(带日期属性)
-> Json gson = gsonBuilder.registerTypeAdapter(java.util.Date.class, new
DateSerializerUtils()).setDateFormat(DateFormat.LONG).create(); String json = gson.toJson(bean); System.out.println(json); // Json -> Bean(带日期类型属性) gson = gsonBuilder.registerTypeAdapter(java.util.Date.class, new
DateDeserializerUtils()).setDateFormat(DateFormat.LONG).create(); java.lang.reflect.Type type = new
com.google.gson.reflect.TypeToken<DateBean>(){}.getType(); DateBean b = gson.fromJson(json,
type); System.out.println(b); } /** * 泛型日期List、Json相互转换 */ @Test public void
testDateGenericListJson() { // 泛型日期List List<DateBean> list = new
ArrayList<DateBean>(); for(int i
= 0; i < 3; i++) { DateBean user = new
DateBean("100" +
i, "name" +
i, 20 + i, new
Date()); list.add(user); } System.out.println(list); // 泛型日期List
-> Json gson = gsonBuilder.registerTypeAdapter(java.util.Date.class, new
DateSerializerUtils()).setDateFormat(DateFormat.LONG).create(); java.lang.reflect.Type type = new
com.google.gson.reflect.TypeToken<List<DateBean>>(){}.getType(); String json = gson.toJson(list,
type); System.out.println(json); // Json -> 泛型日期List gson = gsonBuilder.registerTypeAdapter(java.util.Date.class, new
DateDeserializerUtils()).setDateFormat(DateFormat.LONG).create(); List<DateBean> users = gson.fromJson(json.toString(),
type); System.out.println(users); } } |