Gson简要使用笔记

Stella981
• 阅读 505

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

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

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

下面是一个简单的例子:

Gson简要使用笔记

Gson简要使用笔记

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

Gson简要使用笔记

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

Gson简要使用笔记

Gson简要使用笔记

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简要使用笔记

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

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
2年前
java中常见的json解析方法、库以及性能对比
常见的json解析有原生的JSONObject和JSONArray方法,谷歌的GSON库,阿里的fastjson,还有jackson,jsonlib。Gson(项目地址:https://github.com/google/gson)。Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发
Stella981 Stella981
2年前
Google开源GSON的使用
\谷歌开原项目GitHub地址:https://github.com/google/gson1.新建一个maven项目,引入gson的dependency坐标依赖以及commonsio的坐标:<!处理json格式数据<dependency<groupIdcom.g
Stella981 Stella981
2年前
Json转换神器之Google Gson的使用
这几天,因为项目的需要,接触了Google的Gson库,发现这个东西很好用,遂记下简单的笔记,供以后参考。至于Gson是干什么的,有什么优点,请各位同学自行百度。1\.下载Gson拷贝到项目的lib文件夹中,并将其加入到buildPath中。使用maven的同学,直接在pom中加入以下依赖即可:<dependenc
Wesley13 Wesley13
2年前
GSON搞定任何JSON数据
Gson介绍:GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。特点:a、快速、高效    b、代码量少、简洁c、面向对象d、数据传递和解析方便Gson的p
Stella981 Stella981
2年前
Gson通过借助TypeToken获取泛型参数的类型的方法
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下。由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型)。但是有的时候
Stella981 Stella981
2年前
Gson自定义处理Calendar日期Date时间类型
Gson是什么?Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个JSON字符串转成一个Java对象,或者反过来。Gson对一般类型的序列化和反序列话都没有问题,但是像Calendar日期这样的类型,可能需要手动处理下            遇到的问题?时间
Stella981 Stella981
2年前
Gson
Java对象和Json之间的互转,一般用的比较多的两个类库是Jackson和Gson,下面记录一下Gson的学习使用。基础概念: Serialization:序列化,使Java对象到Json字符串的过程。 Deserialization:反序列化,字符串转换成Java对象使用Maven管理Gson,pom.xml导入gson的依赖
Stella981 Stella981
2年前
Gson 数据解析
gson和其他现有javajson类库最大的不同时gson需要序列化的实体类不需要使用annotation来标识需要序列化的字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。下面是一个简单的例子:1.public class Person {3.private String name;
Stella981 Stella981
2年前
Gson的学习与使用
Gson介绍:GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。特点:a、快速、高效b、代码量少、简洁c、面向对象d、数据传递和解析方便Gson的pom依赖:<d
Wesley13 Wesley13
2年前
Java操作JSON数据(2)
Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象。本介绍下Gson的基本使用方法,包括序列化和反序列化;文中所使用到的软件版本:Java1.8.0\_191、Gson2.8.6。1、引入依赖<dependency