Google Gson解析Json数据应用实例
来源:互联网 发布:黑手党3低配优化 编辑:程序博客网 时间:2024/05/19 11:44
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);
}
}
- Google Gson解析Json数据应用实例
- Google Gson解析Json数据应用实例
- google-gson解析json数据---小实例
- Gson解析JSON数据实例
- google-GSON解析和生成JSON数据
- Gson解析Json实例
- Gson解析 json 实例
- Gson应用《Json解析》
- Gson解析Json数据
- Gson解析Json数据
- Gson解析Json数据
- Gson解析json数据
- Gson解析json数据
- Gson解析Json数据
- Gson解析Json数据
- gson 解析json数据
- GSON解析json数据
- Gson解析Json数据
- iPhone/Mac Objective-C内存管理教程和原理剖析
- 初创公司最爱使用的那些开发工具
- js计算器
- Hash表
- Java并发编程之线程管理(Executor框架13)
- Google Gson解析Json数据应用实例
- Android高级模糊技术
- 软件破解网站列表--整理于2014-3-30
- c++ const 用法
- 第一次邂逅快速傅立叶变换(FFT)
- 电话面试:求两个链表的第一个公共结点
- Lance老师UI系列教程第七课->自定义spinner下拉框实现的实现
- .net+jeasyui(jquery)+webservice+控制台(windows服务) 开发棋王竞猜游戏娱乐网站
- hdu 3530 单调队列优化DP