轉自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/java
1.須要的Jar包json
1) Google Gson(gson-xxx.jar)下載地址:http://code.google.com/p/google-gson/downloads/listapp
2)JUnit4ide
2. 應用實例代碼工具
下載地址:http://download.csdn.net/source/3499627測試
包括以下類:ui
1)普通JavaBean類/帶日期屬性的JavaBean類:JavaBean.java/DateBean.javagoogle
2)日期序列/反序列工具類:DateSerializerUtils.java、DateDeserializerUtils.javaspa
3)測試類GsonTester.java.net
具體代碼:
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); } } |