JSON

【简明教程】JSON

字号+ 作者:H5之家 来源:H5之家 2017-03-08 12:03 我要评论( )

JSON概览 JSON(JavaScript Object Notation)是一种基于文本的数据交换格式。无论你的应用是用哪种开发语言编写的(Java/EE,Ruby,PHP,C#/.Net等等),你都可以使用JSON来通过网络进行数据交互和处理。几乎所有的编程语言都有很好的库或第三方工具来提供


JSON概览

JSON(JavaScript Object Notation)是一种基于文本的数据交换格式。无论你的应用是用哪种开发语言编写的(Java/EE,Ruby,PHP,C#/.Net等等),你都可以使用JSON来通过网络进行数据交互和处理。几乎所有的编程语言都有很好的库或第三方工具来提供基于JSON的API支持,因此你可以非常方便地使用任何自己喜欢的编程语言来处理JSON数据。而另一方面随着REST、像MongoDB这样的NoSQL技术或标准的广泛使用,JSON也正成为一种被推荐的数据交互格式。

JSON是在2001年,由Douglas Crockford创建的,并且被IETF(Internet Engineering Task Force)定义为RFC 4627标准,详请参考:。JSON的媒体类型被定义为 application/json,而文件的后缀为.json。

JSON是什么

JSON是一种简单数据格式,它有三种数据结构:

一个有效的JSON文档需要被包含在一对花括号内

{ JSON-Data }

请注意,有些开发社区或线上文档直接将上面的JSON文档称为JSON字符串,这两者的意思是一样的。

为什么使用JSON

JSON被认为是XML的很好替代者。因为JSON的可读性非常好,而且它没有像XML那样包含很多冗余的元素标签,这使得应用在使用JSON进行网络传输以及进行解析处理的速度更快,效率更高。

键值对 —— Name/Value

键值对是JSON中最基本的数据结构:

{ “firstName”: “John” }

在上面的例子中属性"firstName"是用一对双引号括起来的一个字符串。而它的值"John"在这个例子中也是一个字符串,当然它还可以是其他类型,具体可参考后面数据类型的章节。在市面上很多的产品或技术声称他们使用的是JSON数据格式,但他们在定义属性时,并没有用双引号将属性名称括起来,其实这是违反JSON定义标准的。

对象 —— Object

一个JSON对象是包含了一组未排序键值对的集合。下面例子中的address就是一个JSON对象:

{ “address” : { “line1” : “555 Main Street”, “city” : “Denver”, “stateOrProvince” : “CO”, “zipOrPostalCode” : “80202”, “country” : “USA” } }

上面的例子中address对象包含了5个属性,它们之间用,进行分割。

数组 —— Array

JSON中[]来包含数组元素,参考下面的例子:

{ “people” : [ { “firstName”: “John”, “lastName”: “Smith”, “age”: 35 }, { “firstName”: “Jane”, “lastName”: “Smith”, “age”: 32 } ] } 数据类型

JSON中的数值(键值对中的值)可以是以下任意一种:

Number

数值类型数据可以是整型也可以是双精度的浮点型数据。下面是一些示例:

“age”: 29 “cost”: 299.99 “temperature”: -10.5 “speed_of_light”: 1.23e11 “speed_of_light”: 1.23e+11 “speed_of_light”: 1.23E11 “speed_of_light”: 1.23E+11

上面的属性(如age等)都是用双引号括起来的字符串,而数值是不需要用双引号括起来的。你可以在数值前加上-号来表示负数,也可以采用科学计数法。但不能在数值前加0或使用16进制来表示一个数值。

Boolean

JSON中的Boolean值可以用true或false来表示。

{ “emailValidated” : true }

Boolean值也不需要使用双引号来修饰。

null

严格来说null并不是一个数据类型,但它非常重要,它表示一个属性或元素没有值。因此请注意 ' ' 表示的是空字符串,而null表示的才是空值。

{ “age” : null } 代码注释

JSON不允许在JSON文档或字符串中添加注释。注释功能最早在JSON中是存在的,但开发者们错误地使用了它来辅助JSON数据的解析,当Douglas Crockford意识到这种不好的使用实践后,便取消了注释功能,以保证JSON在不同计算平台间作为交互数据格式的特性。

样式

你可能已经注意到了在之前的例子中,所有的属性名称都使用了驼峰式的命名规则。这并不是JSON的一个标准要求,但这能够帮助提高JSON文档的可读性,因此作为一个事实标准在所有JSON应用中被使用。

语法

Douglas Crockford 在他的JSON网站中,给出了所有JSON语法语义的说明。另外还有一个iOS App JSON Pro FREE可以用来通过示例学习或参考JSON。

JSON校验

一个文本文档或字符串必须遵守JSON的语法定义,才能被视作一个有效的JSON文档。JSON文档是否有效非常重要,因为它直接决定了,你的JSON数据能否在不同的应用中被正确地解析和使用。JSONLint提供了一个可交互的Web版JSON校验工具,你只需要将你的JSON文档粘贴进去,并点击校验按钮,它便会自动进行校验,并将问题显示在下方。


在上面这个例子中,这个JSON对象的city属性没有加上双引号,导致校验失败。在返回的提示中,显示了“Expecting 'STRING', got 'undefined'”错误。

JSONLint也提供了一个可以在Chrome中直接使用的插件。

JSON数据模型

在应用中手工编写JSON文档,会很枯燥并容易出错。为了防止这样的恶错误 ,你可以使用JSONPad或JSON Editor Online这样的工具,它们能够帮助你构建JSON逻辑模型(类似于UML),然后通过模型生成JSON文档。

JSON Editor Online

[ JSON Editor Online] () 是一个在线JSON数据建模工具,他也提供了一个Chrome插件可以使用。


浏览器中的JSON

Firefox和Chrome都提供了一些很好的插件方便开发人员查看或处理JSON数据。

REST Client

Rest Client是Firefox中的一个扩展应用。他能够帮助开发人员在浏览器中调试REST风格的Web Service。它最大的优点是能将返回的JSON数据结果,以很好的格式显示出来。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 解析JSON时注意的相关问题进行学习

    解析JSON时注意的相关问题进行学习

    2017-03-08 12:05

  • Android中gson、jsonobject解析JSON的方法详解

    Android中gson、jsonobject解析JSON的方法详解

    2017-03-07 17:02

  • 解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理

    解决SpringMVC 返回Java8 时间JSON数据的格式化问题处理

    2017-03-07 10:23

  • JSON工具学习记录--FastJSON

    JSON工具学习记录--FastJSON

    2017-03-05 11:02

网友点评
l