Gson 的简单应用

最近在做一个java web service项目,需要用到jason,本人对java不是特别精通,于是开始搜索一些java平台的json类库。

发现了google的gson,因为之前对于protocolbuf有一些了解,带着一些好奇心,我开始使用了gson。

经过比较,gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。

下面是一个简单的例子:


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;    }}

实体很简单,两个字段,当然实体中的字段也可以是List或者Set类型的。


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);

上面的代码重点是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的同学有所帮助。

时间: 2024-11-05 22:36:06

Gson 的简单应用的相关文章

利用GSON解析简单Json字符串

之前一直使用fastjson来解析json串,性能高,上手快,简单易学不错的! 最新听说fastjson爆出一个安全漏洞,只能寻找新的json库替代,就找到了gson,google开发的一款解析json的库, 平时工作中,复杂的json串解析用不太多,一般就是最基本的json串 用gson解析简单json串的示例如下: String jsonString = "{\"uid\":\"189024\", \"region\":\"

Java Json API:Gson使用简单入门

GSON是Google开发的Java API,用于转换Java对象和Json对象.本文讨论并提供了使用API的简单代码示例.更多关于GSON的API可以访问:http://sites.google.com/site/gson/. 本文是GSON系列文章的第一篇.本文是其他文章的基础,因此不需要任何GSON或JSON经验.第二篇文章提供了关于GSON反序列化(从JSON到Java)的示例,第三篇文章提供了关于GSON序列化(从Java到JSON)的示例. 下面列出的所有代码都可以在https://

Okhttp、Volley和Gson的简单介绍和配合使用

转载自:http://www.apkbus.com/home.php?mod=space&uid=784586&do=blog&id=61255 1.okhttp是一个高效的.快速的被谷歌认可的,支持HTTP/2和SPDY volley是一个方便网络任务库,可以负责请求.加载.缓存等同步问题,也可以处理图片.JSON.文本操作起来比较简单 gson是JSON序列化和反序列化(以上三个能相互间轻松使用主要还是因为okhttp是谷歌推荐的.volley是谷歌开发的.Gson是谷歌开发的

gson的简单使用方法

gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段. 下面是一个简单的例子: publicclass Person { private String name;privateint age; /*** @return the name*/public String getName() {return name;} /*** @param nam

gson 的简单使用

生成Json字符串 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);

利用Gson将一个对象转化成String

今天在弄版本更新的重构,居然遇到这么一个问题,差点没有单独写一个方法获取字符串,多亏Gson!      很简单,两句话:      其中entity是自己定义的一个类的对象 <strong> Gson gson = new Gson(); String entityToStr = gson.toJson(entity);</strong>

转换JSON之GSON

日常敲代码时候肯定免不了要遇到转换json数据的时候,记录一下GSON的简单使用方法: 首先需要引入Gson的JAR包, 有了jar包之后你就可以放心的使用了. 使用Gson可以转换的东西很多,不管是list还是map或者是set,再或者是一个对象等等都可以使用gson,但是在转换某些格式的数据时候需要进行一下简单的处理, 比如日期格式,因为在转换日期格式的时候出现了问题,所以详细记录一下gson转换日期格式. 我的User对象中有一个日期格式的birth,在转换User的list集合时候,如果

android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据

补充:关于PHP服务端可能出现的问题: 如果你刚好也像我一样,用php实现的服务端程序,采用的是apache服务器,那么虚拟主机的配置可能会影响到android应用的调试!! 在android应用中访问的IP都是10.0.2.2,如果在apache虚拟主机配置文件中配置了多个虚拟主机,那么将默认解析为对第一个虚拟主机的请求,所以,在调试android应用时,应该将对应的服务端所配置的那个虚拟主机放在配置文件中的第一个虚拟主机的位置.否则就会出现请求的文件不存在等的错误. 服务端返回JSON数据及

项目知识(三)

1.gson判断JsonArray还是JsonObject http://www.docin.com/p-701856021.html 2.Volley的StringRequest的重写 http://www.docin.com/p-701856021.html 3.gson的简单使用 http://www.cnblogs.com/chenlhuaf/archive/2011/05/01/gson_test.html