Google Gson解析Json数据应用实例
转自:http://lixigao449778967.blog.163.com/blog/static/24985164201269105928783/
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数据应用实例的更多相关文章
- Android网络之数据解析----使用Google Gson解析Json数据
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- JAVA使用Gson解析json数据,实例
封装类Attribute: public class Attribute { private int id; private String name; private int age; public ...
- Android中使用Gson解析JSON数据的两种方法
Json是一种类似于XML的通用数据交换格式,具有比XML更高的传输效率;本文将介绍两种方法解析JSON数据,需要的朋友可以参考下 Json是一种类似于XML的通用数据交换格式,具有比XML更高的 ...
- Android中使用Gson解析JSON数据
Android中使用Gson解析JSON数据 在Android中可以使用Gson解析JSON数据 首先,从 code.google.com/p/google-gson/downloads/list ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
- 通过Gson解析Json数据
Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#s ...
- 使用Gson解析JSON数据
本文使用gson对json进行解析处理 首先,下载gson包 ,本文使用(gson-1.6.jar) package com.whroid.java.json; import com.google.g ...
- Gson解析json数据(转)
一. www.json.org这是JSON的官方网站. 首先,我,我们需要在code.google.com/p/google-gson/downloads/list下载JSON的jar包,解析后把gs ...
- android 初步了解应用Gson 解析Json数据
1,因为没有服务器返回数据,对于Tomcat又懒得去配,所以我直接把数据写死到app中 先写一个实体类,便于操作 /** * 实体类 */ public class Person { int id ; ...
随机推荐
- Lua中cJson的读写
这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能比纯Lua库要高10~20倍.并且Lua Json完全支持UTF-8,无需以来其他非Lua/LuaJit相关包. 环境安装 ...
- 【POJ2104】kth num
You are working for Macrohard company in data structures department. After failing your previous tas ...
- iOS本地动态验证码生成-b
用于ios本地动态生成验证码,效果如下: demo.gif 导入CoreGraphics.framework用于绘制图形 封装UIView,便捷使用,代码如下: AuthcodeView.h #imp ...
- SQL Server 2008 设计与实现笔记(一)
Chart5 create database MovieRental; select name, SUSER_SNAME(sid) as [login] from sys.database_princ ...
- Tiny6410 LED字符设备驱动
1.查看用户手册 led1.led2.led3.led4 连接的分别是 GPK4.GPK5.GPK6.GPK7 2.查询6410芯片手册 下面还需要3个步骤: 1.设置GPIO为OUTPUT. 将GP ...
- 几款国产开源的Windows界面库
上次介绍的几款图形界面库http://blog.okbase.net/vchelp/archive/23.html都是国外的开源项目,今天介绍的几款都是国人的开源项目,大部分是采用DirectUI设计 ...
- _CrtIsValidPointer 问题
从微软站点: 检查指针有效性下面的示例使用 _CrtIsValidPointer 验证给定的内存范围对于读或写是否有效. _ASSERTE(_CrtIsValidPointer( address, s ...
- HDMI介绍与流程
HDMI接口 http://baike.c114.net/view.asp?id=17671-21565442 DDC(Display Data Channel)通道用于HDMI发送和接收端之间交换一 ...
- 在自己的网站上实现QQ授权登录
最近在实现QQ授权登录,现将我的实现过程以及我的理解整理如下.以下所述如有不对之处,请指正. 官方提供的SDK有:JS,PHP,Java.我的网站使用Scala+Play搭建的,所以只能用JS SDk ...
- 第一章 CLR的执行模型
编译器将源代码编译为托管模块.托管木块包含: PE32或PE32+头 CLR头 元数据 IL(中间语言)代码 PE32头的文件可在32或64位的电脑上运行,PE32+的只能在64上运行.Window6 ...