快速了解Gson

Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象。GSON核心jar包不到1M,非常精简,但提供的功能无疑是非常强大的,如果使用JDK自带的JSON解析API,使用起来相对比较繁琐一点,而且代码量较多。

  Gson使用简单,可以实现含有多层引用、继承的java对象与json间转化,还可以通过annotation进行选择性的属性转化  


Google Gson是一个开源的,基于Java的类库。它是由Google开发的,使用Gson有助于将Java对象序列化为JSON,反之亦然。 本教程采用简单直观的方式来描述Google Gson的基本到高级概念以及如何使用其API。

以下几点说明为什么应该使用这个库 -

  • 标准化 - Gson是一个由Google管理的标准化库。

  • 高效 - 这是对Java标准库的可靠,快速和高效的扩展。

  • 优化 - Gson库经过高度优化。

  • 支持泛型 - 它为泛型提供了广泛的支持。

  • 支持复杂的内部类 - 它支持具有深度继承层次结构的复杂对象。

Gson的特点

这里列出了Gson的一些最显着的特点 -

  • 易于使用 - Gson API提供了一个高级外观来简化常用的用例。

  • 无需创建映射 - Gson API为大部分要序列化的对象提供了默认映射。

  • 性能优 - Gson速度相当快,内存占用量低。 它适用于大型对象图或系统。

  • 干净JSON - Gson创建一个干净而紧凑的JSON结果,它易于阅读。

  • 无依赖性—Gson库不需要JDK以外的任何其他库。

  • 开源 - Gson库是开源的; 它是免费提供的。


处理JSON的三种方法

Gson提供了三种处理JSON的替代方法 -

1. 流媒体API

它读取和写入JSON内容作为离散事件。 JsonReaderJsonWriter将数据读取/写入令牌,称为JsonToken

这是处理JSON的三种方法中最强大的方法。 它具有最低的开销,并且在读/写操作中速度非常快。 它类似于用于XML的Stax解析器。

2. 树模型
它准备JSON文档的内存树表示。 它构建了一个JsonObject节点树。 这是一种灵活的方法,类似于XML的DOM解析器。

3. 数据绑定
它使用属性访问器将JSON转换为POJO(普通旧Java对象)并从中转换。 Gson使用数据类型适配器读取/写入JSON。 它类似于XML的JAXB解析器。


Gson特征:

1、提供简单的toJson()和fromJson()方法的java对象转换为JSON,反之亦然      

2、允许预先存在不可改变的对象被转换为和从JSON      

3、广泛支持的java泛型      

4、允许自定义对象的意见      

5、支持任意复杂的对象(深层次结果和继承泛型类型的广泛使用)      


项目地址:

https://github.com/google/gson      


最新版本:

<dependency>      

<groupId>com.google.code.gson</groupId>      

<artifactId>gson</artifactId>      

<version>2.7</version>      

</dependency>      


常用API:

Gson gson = new Gson();//全部属性转换实例化
gson.toJson(user);//对象转化为json
gson.fromJson(json, User.class);//json转化为对象
gson.toJson(list);//list转化为json
gson.fromJson(json, new TypeToken<List<User>>(){}.getType());//json转化为list


简单示例:

Gson gson = new Gson();

Map map = new HashMap();

map.put("a", "b");

map.put("c", 5);

System.out.println(gson.toJson(map));


2019-03-21 23:49

JSON教程

相关教程

更多

Gson快速入门程序

                    
                

快速了解shiro

                    1.1  什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。 1.2  为什么要学shiro 既然shiro将安全认证相关的功能抽取出来组成一个框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。 shiro使用广泛,shiro可以运行在we
                

快速了解Kafka

                    什么是kafka kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目。在它的主页描述kafka为一个高吞吐量的分布式(能将消息分散到不同的节点上)MQ。Kafka仅仅由7000行Scala编写,据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。 kafka目前支持多种客户端语言:java,python,c++,p
                

快速了解Hadoop架构

                    Hadoop是一个能够对大量数据进行分布式处理的软件框架, Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。hadoop的集群是基于master/slave模式
                

快速了解mybatis

                    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。MyBatis是被称为一个数据映射和映射需要的类的属性和数据库中的表的列之间的参数和结果。
                

快速了解HTTP

                    
                

快速了解云计算

                    
                

快速了解XSLT

                    
                

快速了解Spring Boot

                    
                

最新教程

更多

构建Disruptor实例-生产消费模型完成整个入门示例

                    初始化Disruptor,构建Disruptor只要需要以下几个参数:1 eventFactory: 消息(event)工厂对象,2 ringBufferSize: 容器的长度,​3 executor: 线程池(建议使用自定义线程池) RejectedExecutionHandler,​4 ProducerType: 单生产者 还是 多生产者, ​5 waitStrategy: 等待策略2、初始化好Disruptor之后,通过该对象的handleEventsWith添加消费者的监听。3、然后启动D...
                

数据生产者向disruptor容器RingBuffer中推送数据

                    RingBuffer是disruptor中不同的上下文(线程)之间传递数据的buffer,以下是数据生产者向disruptor容器RingBuffer中推送数据示例
                

数据消费者:实现EventHandler监听接口处理数据

                    实现EventHandler监听接口,重写onEvent方法处理数据
                

Disruptor实现EventFactory接口创建实例对象

                    创建具体实体类,实现 EventFactory 工厂类接口,重写newInstance方法,在此方法中创建对象
                

快速了解Sentinel 如何使用

                    从定义资源、流量控制规则、熔断降级规则、系统保护规则、访问控制规则、热点规则、查询修改规则、异常和监控等方面快速了解Sentinel 如何使用
                

Sentinel更新计划 Roadmap

                    Sentinel更新计划包括:注解支持、异步调用支持、热点参数限流、黑白名单功能、集群限流、与更多主流框架适配、与更多的数据源适配、Reactive 支持、指标/监控 API 标准化、高版本 Java 适配(JDK 11)、Service Mesh 支持、多语言支持(集群限流客户端)、智能化、自适应限流
                

Sentinel快速入门

                    提供 本地运行 demo 和 公网 demo 来帮助新手快速入门Sentinel。这两种方式都只需要您执行2到5个步骤。