您的位置:首页 > Web前端 > JavaScript

Google Gson解析Json数据应用实例

2014-03-30 21:43 459 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: