关键字: json gson java
Gson网址http://code.google.com/p/google-gson/
1.简单的处理list和map
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
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.处理带泛型的集合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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 . }
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 . }
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 . }
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]]
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]]