From:http://www.cnblogs.com/cyjch/archive/2012/02/15/2352792.html
1.需要的Jar包
1)
Google Gson(gson-xxx.jar)下载地址:http:
2)JUnit4
2.
应用实例代码
下载地址:http:
包括如下类:
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");
String
json = gson.toJson(bean);
System.out.println(json);
bean
= gson.fromJson(json, JavaBean.class);
System.out.println(bean);
}
/**
*
List转换成Json字符串
*/
@Test
public void testList2Json()
{
List
list = new ArrayList();
for(int i
= 0;
i < 5;
i++) {
list.add("element" +
i);
}
System.out.println(list);
String
json = gson.toJson(list);
System.out.println(json);
}
/**
*
泛型List、Json相互转换
*/
@Test
public void testGenericListJson()
{
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);
java.lang.reflect.Type
type =
new com.google.gson.reflect.TypeToken<List<JavaBean>>(){}.getType();
String
json = gson.toJson(list, type);
System.out.println(json);
List<JavaBean>
users = gson.fromJson(json.toString(), type);
System.out.println(users);
}
/**
*
Map转换成Json字符串
*/
@Test
public void testMap2Json()
{
Map
map = new HashMap();
map.put("id",
"1001");
map.put("name",
"scott");
map.put("age",
20);
map.put("addr",
"BJ");
System.out.println(map);
String
json = gson.toJson(map);
System.out.println(json);
}
/**
*
泛型Map、Json相互转换
*/
@Test
public void testGenericMapJson()
{
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);
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);
Map<String,
JavaBean> users = gson.fromJson(json.toString(), type);
System.out.println(users);
}
/**
*
带日期类型Bean、Json相互转换
*/
@Test
public void testDateBeanJson()
{
DateBean
bean = new DateBean("1001",
"scott",
20,
new Date());
gson
= gsonBuilder.registerTypeAdapter(java.util.Date.class,
new DateSerializerUtils()).setDateFormat(DateFormat.LONG).create();
String
json = gson.toJson(bean);
System.out.println(json);
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<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);
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);
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);
}
}