【Gson】【1】Gson使用简介

简介:

一、什么是JSON

1、【定义】

   JSON(JavaScript Object Notation)是JavaScript对象表示法,用于存储和交换文本信息的语法,类似XML,但比XML更小、更灵活。它是独立的语言,具有自我描述性,所以更易理解。

   JSON使用JavaScript语法来描述数据对象,但SJON仍然独立于语言平台。JSON解析器和JSON库支持许多不同的编程语言。


2、【例子】

{

   "employees":[

        {"fristName": "Li", "lastName":"min"},

        {"fristName": "Zhang", "lastName":"feng"},

        {"fristName": "Li", "lastName":"yunfeng"},

   ]

}

这个例子中,对象"employee"包含三个对象数组,其中数组中的每个对象代表一个人名称信息。


3、【语法】

JSON语法是JavaScript对象表示法语法的子集:

(1)数据在键值对中

(2)数据由逗号分隔

(3)花括号保存对象

(4)方括号保存数组


4、【理解】

(1)数据在键值对中

这里的“数据”可以理解为“数据值”,比如键值对"firstName":"Li",数据(值)为Li,它相当于java语句的String firstName = "Li"。其中数据可以是整数或浮点数,也可以是字符串(在双引号中),亦可以是布尔值(true或false)、数组(在方括号中)、对象(右花括号中)和null。


(2)数据由逗号分隔

例如"firstName":"Li","lastName":"min",这两个键值对使用逗号隔开,相当于定义了两个变量:

String firstName = "Li";

String lastName = "min";


(3)花括号保存对象

例如{"firstName":"Li", "lastName":"min"}就是一个对象,使用java可这样理解

private class Employee

{

   String firstName = null;

   String lastName = null;


   public Employee(String firstName, String lastName)

   {

       this.firstName = firstName;

       this.lastName = lastName;

   }

}

其中{"firstName":"Li", "lastName":"min"}相当于new Employee("Li", "min")


(4)方括号保存数组

例如"employees":[{"fristName": "Li", "lastName":"min"},{"fristName": "Li", "lastName":"yunfeng"}]就是一个数组,使用java可这样理解

Employee employee1 = new Employee("Li", "min");

Employee employee2 = new Employee("Li", "yunfeng");

Employee[] employees = new Employee[]{employee1, empolyee2};


5、【备注】

关于JSON的基本知识可能见w3school,网址http://www.w3school.com.cn/json/index.asp


二、JSON解析器

聪明的你一定会想JSON结构是否可以转换为java对象?答案是肯定的,这正是该文重点讲解的内容。既然JSON是一个字符串,那么完全可以自己对字符串解析,当然重新发明轮子的事尽量少做,除非新发明的轮子更合理。现有的轮子:

(1)JSON官方网站提供了官方的Java实现(org.json),用于解析和系列化。

(2)StringTree,这个解析器的特点“简单”,JSONReader负责解析 、JSONWriter负责序列化。

(3)JSEL,不仅可以解析同时还可以处理JSON中的注释,甚至内处理一些简单的表达式,接口简单、性能不错。

除此之外,还有大名鼎鼎的jackson、GSON等等。


至于GSON与其它解析器之间的优缺点对比,请读者自己进行测试验证。


三、GSON使用说明简介

1、【GSON简介】

GSON是用于Json和Java对象之间相互转换的类库,即便Java类的源码还未实现,它是一个开源项目,其网址为http://code.google.com/p/google-gson。



i_f03.gif此处读者可能存在疑惑,Java类的源码还未实现,通过GSON就可以转换为这个Java对象?用个例子说明吧:

(1)有一个JSON字符串{name:'GREETINGS', source:'guest'}

(2)若把这个JSON结构转换为一个Demo对象,通常会为Demo类定义两个字段name和source,但下面的Demo类定义并没有name和source字段定义实现,如下:

public class Demo

{

}

(3)运行测试方法会发现可正常工作

public static void main(String[] args)

{

   String s = "{name:'GREETINGS', source:'guest'}";

   Gson gson = new Gson();

   Demo demo = gson.fromJson(s, Demo.class);

}



2、【Gson目标】

可以使用new Gson()或GsonBuilder的create()方法创建GSON对象,由于GSON对象不会保存状态,用户可以无限制地对JSON进行序列化和反序列化操作。通过GSON对象可以轻易实现如下功能:

(1)输出简洁易读的JSON代码

(2)支持任意复杂的对象

(3)允许用户对特殊的表达式进行转换

(4)提供尽量简单的装配操作,就像操作构造器和toString()方法一样在JSON和Java对象之间切换。


     本文转自qingkechina 51CTO博客,原文链接:http://blog.51cto.com/qingkechina/1290500 ,如需转载请自行联系原作者




相关文章
|
JSON fastjson Java
FastJson、JackJson 以及 Gson 的区别
FastJson、JackJson 以及 Gson 是 Java 生态圈中三种常用的 Json 解析器,它们均可将 Java 对象序列化为 Json 格式的字符串,也可将 Json 字符串反序列化为 Java 对象。下面我们讨论一下三者在序列化和反序列化操作中的一些区别。
830 0
|
5天前
|
JSON fastjson Java
Gson与FastJson详解
综上,Gson和FastJson都是用于Java对象和JSON数据互相转换的优秀库,选择哪个取决于性能、功能需求和个人偏好。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
15 2
|
5月前
|
JSON 数据格式
gson坑
gson坑
33 0
|
5月前
|
JSON Java API
Gson基本使用
Gson基本使用
64 0
|
10月前
|
JSON 安全 fastjson
gson与fastjson
gson与fastjson
93 0
|
11月前
|
JSON Java API
Gson-更新中
Gson-更新中
125 0
|
JSON fastjson Java
scala使用Gson和FastJson解析JSON
kafka传过来的数据好多都是JSON格式,需要对其解析,抽取出应用需要的数据。Gson和FastJson是两个不错的解析工具,以后可能经常会使用到,记录一下,防止以后遗忘。
816 0
|
JSON 数据格式
GSON - 基础篇
GSON - 基础篇
169 0
|
JSON 数据可视化 fastjson
Gson 简单使用姿势小结
关于 Json 序列化的框架可以说比较多了,比如 Spring 默认的 Jackson,国内互联网用的比较多的 FastJson,本文则主要介绍一下 Gson 的简单使用姿势,并不会涉及到不同的 json 框架的性能对比
181 0
Gson 简单使用姿势小结
|
JSON 前端开发 JavaScript
JSON解析教程(Gson、FastJson、Jackson)
JSON解析教程(Gson、FastJson、Jackson)
JSON解析教程(Gson、FastJson、Jackson)