JSON简介

JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

JSON 相对于XML要轻量,XML就比较笨重了,所以现在很多数据传输都在逐渐转为使用JSON来作为传输数据的方式。


JSON 数据格式:键/值对

JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值,例如:

{“name”:”李四”}

数据写在大括号里,其中name是键,李四则是值。在Java里name相当于对象的属性,而李四则是这个属性的值。




Java中使用JSON

在Java中我们可以通过maven工程的pom.xml配置文件,来配置JSON的jar包,如果是普通的Java工程的话配置也很简单,只需要把JSON的jar包下好后导入即可。

在这只介绍在maven工程中使用JSON:

  1. 去maven的*库找到JSON的依赖,网址:

http://mvnrepository.com/

Java和JavaScript中的JSON

Java和JavaScript中的JSON

Java和JavaScript中的JSON


保存配置文件就会根据配置的依赖,自动下载JSON包,下载完成后可以看到工程里有这样一个jar包:

Java和JavaScript中的JSON

以上这是JSON包里里面的主要内容。


下面我们来介绍一下,如何解析JSON和生成JSON:

  1. 生成JSON,想要把对象里的数据生成JSON,需要使用JSONObject类来生成,例如我现在有一个Student类:

Java和JavaScript中的JSON


这个类的实例化对象里设置了一些数据,现在我想要把这个对象里的数据生成为JSON格式,代码示例:

Java和JavaScript中的JSON


运行结果:

Java和JavaScript中的JSON

以上这个就是生成好的JSON数据格式,只需要给一个对象就能帮你把对象数据生成为JSON格式,这也是优于XML的一点,XML得自己去写标签结构。


  1. 解析JSON也很简单,例如我现在将上面示例生成的JSON拿来解析,还是使用JSONObject类:

代码示例:

Java和JavaScript中的JSON


运行结果:

Java和JavaScript中的JSON

很简单就获得了解析后的数据。


如果我现在给Student添加一个属性,这个属性能够存储Student对象,并将在这个属性进行封装:

Java和JavaScript中的JSON


然后实例化一个对象存储进去:

Java和JavaScript中的JSON


看看打印出来的JSON会是怎样的?运行结果:

Java和JavaScript中的JSON

可以看到,如果对象中存储了一个对象,那么在JSON的格式中就会再嵌套一个大括号来括起这个子对象里的数据。



  1. 除了可以将对象里的数据生成JSON格式外,还可以将数组对象里的数据生成为JSON格式,需要使用JSONArray这个类,生成后的JSON数据格式是用方括号括起来的。

代码示例:

Java和JavaScript中的JSON


运行结果:

Java和JavaScript中的JSON

和使用Arrays调用toString打印的差不多,只不过JSON格式多了双引号。


  1. 想要解析数组形式的JSON,同样的还是使用JSONArray这个类,也是直接把JSON格式的数据放进去就可以解析了。

代码示例:

Java和JavaScript中的JSON


运行结果:

Java和JavaScript中的JSON


以上就是如何在Java里生成、解析JSON的简单介绍。




JavaScript中使用JSON

下面介绍一下如何在JavaScript中生成和解析JSON,JSON本身就是基于JavaScript中的一个子集,在JavaScript语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等,但是对象和数组是比较特殊且常用的两种类型。和Java一样在JavaScript中转换成JSON的对象数据也是以键值对来表示,数组是以方括号来表示。

1. 生成JSON,在JavaScript中使用JSON对象调用stringify函数来生成JSON字符串,把对象放进stringify函数中,就可以将对象数据转换成JSON字符串,然后返回出来:

代码示例:

Java和JavaScript中的JSON


运行结果:

Java和JavaScript中的JSON


2. 解析JSON,在JavaScript中使用eval函数来解析JSON字符串,eval函数能够把字符串的内容当做JavaScript代码去执行,执行完后会返回一个字符串的结果。所以只需要把JSON格式的数据放入这个函数中,再声明一个变量来接收这个返回的字符串即可,但是要记得在JSON格式的数据外包裹一对小括号。

代码示例:

Java和JavaScript中的JSON


运行结果:

Java和JavaScript中的JSON



3. 将数组对象转换为JSON字符串,在JavaScript中还是使用JSON对象调用stringify函数来把数组对象转换为JSON字符串。

代码示例:

Java和JavaScript中的JSON


运行结果:

Java和JavaScript中的JSON



4. 解析数组形式的JSON,还是使用eval函数来解析,还是得加上小括号,和Java一样使用数组下标来拿值。

代码示例:

Java和JavaScript中的JSON


运行结果:

Java和JavaScript中的JSON


以上就是如何在JavaScript里生成、解析JSON的简单介绍。