- 浏览: 3369344 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
google gson学习
http://lyking2001.iteye.com/blog/504156
Gson网址http://code.google.com/p/google-gson/
1.简单的处理list和map
2.处理带泛型的集合
List<TestBean> testBeanListFromJson = gson.fromJson(beanListToJson, type);
System.out.println(testBeanListFromJson);
//prints [TestBean@1ea5671[id=id,name=name,birthday=<null>]]
map等其他集合类型同上
3.Date类型转化
先写工具类
现在开始测试
后记:对于java.sql.Date的转化同上类似,写两个类用于其序列化和反序列化即可SQLDateDeserializer implements JsonDeserializer<java.sql.Date>
SQLDateSerializer implements JsonSerializer<java.sql.Date>
对于GsonBuilder详见:
[url] http://google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/GsonBuilder.html[/url]
Gson简要使用笔记
http://www.cnblogs.com/chenlhuaf/archive/2011/05/01/gson_test.html
gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。
下面是一个简单的例子:
Person实体
[url]public class Person {
private String name;
private int age;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
@Override
public String toString()
{
return name + ":" +age;
}
}[/url]
实体很简单,两个字段,当然实体中的字段也可以是List或者Set类型的。
生成Json字符串
[url]Gson gson = new Gson();
List<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 10; i++) {
Person p = new Person();
p.setName("name" + i);
p.setAge(i * 5);
persons.add(p);
}
String str = gson.toJson(persons);[/url]
上面的代码重点是Gson对象,它提供了toJason()方法将对象转换成Json字符串,上面代码的str对象值为:
[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10},{"name":"name3","age":15},{"name":"name4","age":20},{"name":"name5","age":25},{"name":"name6","age":30},{"name":"name7","age":35},{"name":"name8","age":40},{"name":"name9","age":45}]
很标准的json数据,很简单吧,呵呵。
下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。
在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。
先来看第一种:
比如json字符串为:[{"name":"name0","age":0}]
代码:
Person person = gson.fromJson(str, Person.class);
提供两个参数,分别是json字符串以及需要转换对象的类型。
第二种,转换成列表类型:
代码:
可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。
Gson的基本使用就是这么多,至于annotation方面可以参考gson的官方文档,希望能对初学java和gson的同学有所帮助。
http://lyking2001.iteye.com/blog/504156
Gson网址http://code.google.com/p/google-gson/
1.简单的处理list和map
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.处理带泛型的集合
List<TestBean> testBeanList = new ArrayList<TestBean>(); TestBean testBean = new TestBean(); testBean.setId("id"); testBean.setName("name"); testBeanList.add(testBean); Java代码 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类型转化
先写工具类
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; public class UtilDateDeserializer implements JsonDeserializer<java.util.Date> { @Override public java.util.Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { return new java.util.Date(json.getAsJsonPrimitive().getAsLong()); } }
import java.lang.reflect.Type; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; public class UtilDateSerializer implements JsonSerializer<java.util.Date> { @Override public JsonElement serialize(java.util.Date src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src.getTime()); } } Java代码 /** * 序列化方法 * @param bean * @param type * @return */ public static String bean2json(Object bean, Type type) { Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.class, new UtilDateSerializer()) .setDateFormat(DateFormat.LONG).create(); return gson.toJson(bean); } /** * 反序列化方法 * @param json * @param type * @return */ public static <T> T json2bean(String json, Type type) { Gson gson = new GsonBuilder().registerTypeAdapter(java.util.Date.class, new UtilDateDeserializer()) .setDateFormat(DateFormat.LONG).create(); return gson.fromJson(json, type); }
现在开始测试
List<TestBean> testBeanList = new ArrayList<TestBean>(); TestBean testBean = new TestBean(); testBean.setId("id"); testBean.setName("name"); testBean.setBirthday(new java.util.Date()); testBeanList.add(testBean); java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List<TestBean>>() { }.getType(); String beanListToJson = bean2json(testBeanList, type); System.out.println("beanListToJson:" + beanListToJson); //prints [{"id":"id","name":"name","birthday":1256531559390}] List<TestBean> testBeanListFromJson = json2bean(beanListToJson, type); System.out.println(testBeanListFromJson); //prints [TestBean@77a7f9[id=id,name=name,birthday=Mon Oct 26 12:39:05 CST 2009]]
后记:对于java.sql.Date的转化同上类似,写两个类用于其序列化和反序列化即可SQLDateDeserializer implements JsonDeserializer<java.sql.Date>
SQLDateSerializer implements JsonSerializer<java.sql.Date>
对于GsonBuilder详见:
[url] http://google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/GsonBuilder.html[/url]
Gson简要使用笔记
http://www.cnblogs.com/chenlhuaf/archive/2011/05/01/gson_test.html
gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。
下面是一个简单的例子:
Person实体
[url]public class Person {
private String name;
private int age;
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* @return the age
*/
public int getAge() {
return age;
}
/**
* @param age the age to set
*/
public void setAge(int age) {
this.age = age;
}
@Override
public String toString()
{
return name + ":" +age;
}
}[/url]
实体很简单,两个字段,当然实体中的字段也可以是List或者Set类型的。
生成Json字符串
[url]Gson gson = new Gson();
List<Person> persons = new ArrayList<Person>();
for (int i = 0; i < 10; i++) {
Person p = new Person();
p.setName("name" + i);
p.setAge(i * 5);
persons.add(p);
}
String str = gson.toJson(persons);[/url]
上面的代码重点是Gson对象,它提供了toJason()方法将对象转换成Json字符串,上面代码的str对象值为:
[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10},{"name":"name3","age":15},{"name":"name4","age":20},{"name":"name5","age":25},{"name":"name6","age":30},{"name":"name7","age":35},{"name":"name8","age":40},{"name":"name9","age":45}]
很标准的json数据,很简单吧,呵呵。
下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。
在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。
先来看第一种:
比如json字符串为:[{"name":"name0","age":0}]
代码:
Person person = gson.fromJson(str, Person.class);
提供两个参数,分别是json字符串以及需要转换对象的类型。
第二种,转换成列表类型:
代码:
List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType()); for(int i = 0; i < ps.size() ; i++) { Person p = ps.get(i); System.out.println(p.toString()); }
可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。
Gson的基本使用就是这么多,至于annotation方面可以参考gson的官方文档,希望能对初学java和gson的同学有所帮助。
发表评论
-
分布式存储系统GlusterFS安装配置
2016-06-27 14:51 999http://navyaijm.blog.51cto.com/ ... -
分布式查询 presto 入门安装使用
2016-06-24 15:44 2471http://my.oschina.net/chengxiao ... -
跟我学习dubbo
2016-06-17 15:20 1036跟我学习dubbo-目录 http://bluereader. ... -
JavaMelody监控web服务器
2016-06-17 14:20 1152JavaMelody监控web服务器 http://my.os ... -
freemarker使用记录
2016-06-08 16:24 1284freeMarker语法 http://uule.iteye. ... -
freemarker判断是否为空
2016-06-08 16:03 2http://www.oschina.net/code/sni ... -
ehcache 分布式支持
2016-06-05 22:26 1061原文 http://my.oschina.net/glenxu ... -
Intellij IDEA插件开发入门
2016-05-26 11:42 2850原文: http://blog.csdn.net/dc_726 ... -
阿里巴巴Druid数据源的配置与使用
2016-05-24 17:42 1503http://my.oschina.net/wjme/blog ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2247http://www.oschina.net/p/uncode ... -
mysql中间件研究(Atlas,cobar,TDDL), 分库分表插件
2016-05-09 14:15 3397http://www.guokr.com/blog/47576 ... -
Fedora安装Redis
2016-05-04 08:56 1384管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1277集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4739使用Spring-data进行Redis操作 http://z ... -
Shiro集群实现
2016-05-04 08:53 2268apache shiro集群实现(一) session共享 h ... -
spring 注解方式下使用commons-validator 验证表单
2016-05-03 11:08 3041原文: http://www.programgo.com/ar ... -
Apache Lucene 5.x版本 示例
2016-04-28 15:46 1104http://blog.csdn.net/isea533/ar ... -
Hessian 二进制RPC协议整合到SpringMVC
2016-04-27 09:47 1707SpringMVC集成Hessianhttp://blog.c ... -
shiro过滤器过滤属性含义
2016-04-21 13:51 1279http://my.oschina.net/cng1985/b ...
相关推荐
Gson 2.3.1 的 源代码,对深入学习gson的实现原理有很大的帮助,对gson中标签的使用的研究,有很大的帮助。
google出版的专门用于解析和生成json的工具,gson工具的源码,非常强大,想学习了解gson如何解析的,可以参考
android json 解析 ,希望大家好好学习啊
json解析工具Google官网提供 分享给大家学习
google开源的一套json解析的库文件,是.jar格式,直接导入java工程中的lib目录即可使用。(最新版gson,专门用来解析json数据)
import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonParser; /** *@Author:jilongliang *@Email:jilongliang@sina.com *@Date...
SSH2 整合开发,实现简单的增删改查,使用数据库mysql ,附带Google的Gson和Xstream 开发,ajax,简单易懂,仅供学习使用
这里有jackson作者cowtowncoder等人对fastjson的性能评价:https://groups.google.com/forum/#!topic/java-serialization-benchmarking/8eS1KOquAhw Fastjson VS gson性能 fastjson比gson快大约6倍,测试结果上这里...
RESTful API 商店 使用 Java Servlet 的 RESTful API 电子商务应用程序。 这个应用程序是为了学习java servlet而制作的。...谷歌 Gson MySQL 连接器 ####工具 Maven Maven 编译器插件 Tomcat7 Maven 插件
Ajax 解决方案:jQuery + JavaScript + JSON + google-gson 快速上手 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分...
Gank.io a client for gank.io with use dagger2 MVP Rxjava ...感谢@hcc的 AndroidRank项目,让我学习了很多东西 Some Links Introduction use dagger2 google mvp sample Introduction to google mvp sample Li
Gson json数据解析框架 https://github.com/google/gson SlidingMenu侧拉菜单框架 https://github.com/jfeinstein10/SlidingMenu SwipeMenuListView侧滑删除框架 ...
3、Json语言的解析,了解谷歌提供的开源的解析json的框架(Gson.fromJson()), 4、侧边栏(LeftMenuFragment)控制主界面,需要先拿到父亲(MainActivity),父亲再去拿到ContentFragment控制相应的子界面内容 ...
1.使用Loader + HttpClient + GreenDao + Gson + Fragment,优点是可定制性强,由于使用Google家自己的Loader和LoaderManager,代码健壮性强。 缺点是整套代码学习成本较高,使用过程中样板代码较多,(比如每一个...
然而,随着我尝试学习和练习不同的东西,它随着时间的推移而发展,例如: 使用 SparkJava 框架创建控制器 使用 Google 的 Guice 框架进行依赖注入 使用 Google 的 Gson 轻松序列化/反序列化 Java 对象。 在 Hacker...
Gson Json 解析库 Prettytime 格式化日期时间 barcodescanner 二维码扫描 fresco Facebook 开源的图片缓存库 butterknife 注解框架 materialish-progress Material Design 风格进度条 PhotoDraweeView 基于 ...
CS263WorldChat ###CS 263 项目可用该项目旨在将来自世界各地的人们联系起来,以进行文化交流和语言学习。 该项目是一个使用 Apache Maven 部署的谷歌应用引擎应用。 该项目的 Api 依赖于位于 target/WorldChat-...
3、Json语言的解析,了解谷歌提供的开源的解析json的框架(Gson.fromJson()), 4、侧边栏(LeftMenuFragment)控制主界面,需要先拿到父亲(MainActivity),父亲再去拿到ContentFragment控制相应的子界面内容 5...
使用的库是 com.google.code.gson:gson:2.2.3 org.apache.httpcomponents.httpclient:4.0 其他库(如 android support 和 httpmime)作为导出库包含在产品中但未使用。 JUnit4 案例正在针对已知的 REST API 测试...
Gson(google json包) 4. MySql数据库进行存储 5. 使用Tomcat服务部署 6. Json数据传输 ## 前端 1. jsp 2. js 3. css 4. Ajax请求(请求Json) 编写 1. 完成数据库建立 2. 完成BookDao 3. 完成BookService 4. ...