gson介绍

摘要:
对于javajson对象的处理,有一些类库,包括Jackson和Fastjson。这里我们介绍由Google封装的类库gson。gson与其他现有javajson类库的最大区别在于,gson需要序列化实体类,而不使用注释来标识需要序列化的字段。同时,gson可以通过使用annotation灵活配置需要序列化的字段。1) toJason()方法将对象转换为Json字符串。2) fromJson()方法实现了从Json相关对象到java实体的方法。

java json对象的处理,目前有好一些类库,比较著名的有Jackson,Fastjson等。

这里介绍一下google封装的类库gson。

gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要

使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。

1)toJason()方法将对象转换成Json字符串

2)fromJson()方法来实现从Json相关对象到java实体的方法。

如:

Person person = gson.fromJson(str, Person.class);
List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());
其中TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。

通过使用annotation来灵活配置需要序列化的字段的示例如下,不用太多解释了。

public class VersionedClass {
  @Since(1.1) private final String newerField;
  
@Since(1.0) 
private final String newField;
  private final String field;

  public VersionedClass() {
    this.newerField = "newer";
    this.newField = "new";
    this.field = "old";
  }
}

VersionedClass versionedObject = new VersionedClass();
Gson gson = new GsonBuilder().setVersion(1.0).create();

String jsonOutput = gson.toJson(someObject);
System.out.println(jsonOutput);
System.out.println();

gson = new Gson();
jsonOutput = gson.toJson(someObject);
System.out.println(jsonOutput);


======== OUTPUT ========
{"newField":"new","field":"old"}

{"newerField":"newer","newField":"new","field":"old"}

免责声明:文章转载自《gson介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇js数组遍历方法总结问题分析下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

django前后分离-restful

前言REST是所有Web应用都应该遵守的架构设计指导原则。 Representational State Transfer,翻译是”表现层状态转化”。 REST核心: 资源, 状态转移, 统一接口 资源:是REST最明显的特征,是指对某类信息实体的抽象,资源是服务器上一个可命名的抽象概念,资源是以名词为核心来组织的,首先关注的是名词。 状态转移:是指客户端...

Akka系列(九):Akka分布式之Akka Remote

前言.... Akka作为一个天生用于构建分布式应用的工具,当然提供了用于分布式组件即Akka Remote,那么我们就来看看如何用Akka Remote以及Akka Serialization来构建分布式应用。 背景 很多同学在程序的开发中都会遇到一个问题,当业务需求变得越来越复杂,单机服务器已经不足以承载相应的请求的时候,我们都会考虑将服务部署到不同的...

php的serialize序列化和json性能测试

最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。 在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持。 在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize函数要高效。耳闻不...

jquery 的 ajax 传输 数组 ,但后台无法获取的 原因 与 解决 办法

1.前言 js传输数组到服务器 ,controller无法解析 ,打印结果是 null 2.原因 jQuery会调用jQuery.param序列化参数,源码是 jQuery.param( obj, traditional ), 作用是深度序列化参数对象,用来适应PHP和Ruby on Rails等框架,但servelt api却无法处理 因此,禁用序...

Android 使用Parcelable序列化对象

转:http://ipjmc.iteye.com/blog/1314145       Android序列化对象主要有两种方法,实现Serializable接口、或者实现Parcelable接口。实现Serializable接口是Java SE本身就支持的,而Parcelable是Android特有的功能,效率比实现Serializable接口高,而且还可...

ArrayList集合中的elementData为什么不参与序列化?

在ArrayList中有这么一段代码    /** * 存储ArrayList元素的数组缓冲区。ArrayList的容量是此数组缓冲区的长度。 * 添加第一个元素时,任何带有elementData == DEFAULTCAPACITY_EMPTY_ELEMENTDATA的空ArrayList都将扩展为DEFAULT_CAPACITY。...