文档章节

Gson简要使用笔记

短短的歼击机
 短短的歼击机
发布于 2014/03/27 15:51
字数 635
阅读 128
收藏 6

哇,原来我已经潜水2年多了,还是需要养成习惯写写东西啊。

最近在做一个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的同学有所帮助。


© 著作权归作者所有

短短的歼击机

短短的歼击机

粉丝 82
博文 268
码字总数 269797
作品 0
武汉
高级程序员
私信 提问
GSON序列化时排除字段的几种方式

GSON 是Google发布的 JSON 序列化/反序列化工具,非常容易使用。本文简要讨论在使用GSON将Java对象转成JSON时,如何排除某些字段。 最简单的用法 假设有下面这个类: class MyObj { public i...

蔡少东
2015/01/17
11.8K
2
Gson序列化时@SerializedName的使用

Gson是java中比较常见的json序列化工具,实习参与的项目由于最开始是C#开发的.net项目,近两年才开始用java,但之前的很多项目仍然在使用C#并且还在更新。于是牵涉到跨语言的程序通信, 公司...

liujiest
2016/08/09
999
0
Json转换神器之Google Gson的使用

这几天,因为项目的需要,接触了Google的Gson库,发现这个东西很好用,遂记下简单的笔记,供以后参考。至于Gson是干什么的,有什么优点,请各位同学自行百度。 1. 下载Gson 拷贝到项目的lib...

摆渡者
2014/02/28
36.3K
0
GSON使用笔记(3) -- 如何反序列化出List

GSON使用笔记(3) -- 如何反序列化出List 时间 2014-06-26 17:57:06 CSDN博客原文 http://blog.csdn.net/zxhoo/article/details/34856061 本文通过3个问题来讨论如何使用 GSON 把JSON反序列...

thinkyoung
2015/03/24
0
0
Android网络请求框架Retrofit使用笔记

Android网络请求框架Retrofit使用笔记 丛林听雨2016-04-05264 阅读 Retrofit是一个安卓端开源网络请求库,目前依赖于okhttp: http://square.github.io/retrofit/ 并提供了多种数据转换工厂和...

丛林听雨
2016/04/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins World 贡献者峰会及专家答疑展位

本文首发于:Jenkins 中文社区 原文链接 作者:Marky Jackson 译者:shunw Jenkins World 贡献者峰会及专家答疑展位 本文为 Jenkins World 贡献者峰会活动期间的记录 Jenkins 15周岁啦!Jen...

Jenkins中文社区
19分钟前
6
0
杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。 然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为...

liululee
34分钟前
6
0
OSChina 周二乱弹 —— 我等饭呢,你是不是来错食堂了?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 自行车丢了:给主编推荐首歌 《クリスマスの夜》- 岡村孝子 手机党少年们想听歌,请使劲儿戳(这里) @烽火燎原 :国庆快来,我需要长假! ...

小小编辑
今天
329
8
玩转 Springboot 2 之热部署(DevTools)

Devtools 介绍 SpringBoot 提供了热部署的功能,那啥是热部署累?SpringBoot官方是这样说的:只要类路径上的文件发生更改,就会自动重新启动应用程序。在IDE中工作时,这可能是一个有用的功能...

桌前明月
今天
5
0
CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部