关于Json和Gson的概述与相关示例

JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克福特构想和设计、轻量级的数据交换语言,该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。尽管JSON是JavaScript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。

JSON 数据格式与语言无关,脱胎于 JavaScript,但目前很多编程语言都支持 JSON 格式数据的生成和解析。JSON 的官方 MIME 类型是 application/json,文件扩展名是 .json。

JSON用于描述资料结构,有两种结构存在:

对象(object):一个对象包含一系列非排序的名称/值对(pair),一个对象以{开始,并以}结束。每个名称/值对之间使用:分区。

数组 (array):一个数组是一个值(value)的集合,一个数组以[开始,并以]结束。数组成员之间使用,分区。

具体的格式如下:

名称/值(pair):名称和值之间使用:隔开,一般的形式是:

{name:value}

一个名称是一个字符串; 一个值(value)可以是一个字符串(string),一个数值(number),一个对象(object),一个布尔值(bool),一个有序列表(array),或者一个null值。

字符串:以""括起来的一串字符。

数值:一系列0-9的数字组合,可以为负数或者小数。还可以用e或者E表示为指数形式。

布尔值:表示为true或者false。

值的有序列表(array):一个或者多个值用,分区后,使用[,]括起来就形成了这样的列表,形如:

[value, value]

示例:

在maven项目中引用json依赖

java中使用json

我们也可以通过map集合来构建json

也可以使用javabean来构建json对象

从文件中读取json

引入依赖包

创建json文件

读取json内容

存在这样一种情况,当我们想获取json数据中key为name的value值,但是没有这个key 如果不加以处理,会引起程序的报错

我们可以采用以下的方式来保证程序的健壮性

Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。

Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需先创建好对象的类别以及其成员才能成功的将JSON字符串成功转换成相对应的对象。

class Examples {

private int answer1 = 100;

private String answer2 = "Hello world!";

Examples(){

} // default constructor

}

序列化JAVA对象成JSON字符串

Examples example1 = new Examples();

Gson gson = new Gson();

String json = gson.toJson(example1);

==> json is {"answer1":100,"answer2":"Hello world!"}

反序列化JSON字符串成对应的JAVA对象

Examples example2= gson.fromJson(json,Examples.class);

==> example2即與example1相同

对象example1透过toJson序列化成JSON字符串传递,再宣告一个对象example2为接收了JSON后透过fromJson反序列化成example2,故example1与example2相同

在pom文件中添加相关的依赖

基本示例:

这样看gson与json没有多大区别

但是我们可以这样玩,给属性加上注解

这个很有意思对吧,可以改变key值

构建个性化的gson数据

gson简单的回调函数示例:

使用gson隐藏数据 如下 sex的值并未显示出来

将gson数据解析成对象。这是json所做不到的

使用gson实现日期的解析

注意:gson数据中的数组可以和java中的集合实现无缝对接