JSON使用手册
JSON: JavaScript Object Notation
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标准,详请参考:http://tools.ietf.org/html/rfc4627 。 JSON的媒体类型被定义为 application/json,而文件的后缀为.json。
一句话概括:
JSON是一种通过普通字符串描述数据的手段,用于表述有结构的数据,类似于编程语言中字面量的概念,语法上和JS字面量非常相似,是一种数据标准。
JSON的数据结构
一个有效的JSON文档需要被包含在一对花括号内,其中的字符串必须要用""双引号包裹,这更符合JSON标准,而且内部不允许添加注释。
{JSON-Data}
在花括号{}内的数据结构一共有3种,其中 键值对>>值 又可以是多种数据类型
键值对(key/value)
Object Array String Number Boolean null
- 对象 Object
- 数组 Arrays
键值对(key/value)
键值对是JSON中最基本的数据结构:
{
"key": "value",
"key1":337,
"key2":null,
"key3":true
}
在市面上很多的产品或技术声称他们使用的是JSON数据格式,但他们在定义属性时,并没有用双引号将属性名称括起来,其实这是违反JSON定义标准的
对象 Object
一个JSON对象是包含了一组未排序键值对的集合,键值对之间用,分隔
{
"name": "gc",
"age": 18,
"gender": true,
"hobby": "basketball"
}
数组 Array
JSON中[]
来包含数组元素,举栗子:
{
"student" : [
{ "Name": "John","age": 21 },
{ "Name": "Tom","age": 19 },
"bigbang",
"better call saul",
64
]
}
其他需要说明的地方:
null
严格来说null
并不是一个数据类型,但它非常重要,它表示一个属性或元素没有值。因此请注意 ' '
表示的是空字符串,而null
表示的才是空值。
不允许代码注释
注释功能最早在JSON中是存在的,但开发者们错误地使用了它来辅助JSON数据的解析,当Douglas Crockford意识到这种不好的使用实践后,便取消了注释功能,以保证JSON在不同计算平台间作为交互数据格式的特性。
命名规则
所有的属性名称都使用了驼峰式的命名规则。这并不是JSON的一个标准要求,但这能够帮助提高JSON文档的可读性,因此作为一个事实标准在所有JSON应用中被使用。
JS中提供的JSON方法
JSON.parse()
:该方法用于将一个 JSON 字符串转换为对象,供JS使用。 **语法**
JSON.parse(text[, reviver])
**参数说明**:
`text`:必需, 一个有效的 JSON 字符串。
`reviver`: 可选,一个转换结果的函数, 将为对象的每个成员调用此函数。
**返回值**:
返回给定 JSON 字符串转换后的对象。
JSON.stringify()
:该方法用于将 JavaScript 值转换为 JSON 字符串,可提供给服务器存储等。 **语法**
JSON.stringify(value[, replacer[, space]])
**参数说明**:
**value**:
必需, 要转换的 JavaScript 值(通常为对象或数组)。
**replacer**:
可选。用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。
**space**:
可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
**返回值**:
返回包含 JSON 文本的字符串。
JSON作为一个数据标准,它已经逐步替代XML成为Internet上最受欢迎的交互数据格式,使用场景十分广泛,比如AJAX等,有机会会再分享一些关于JSON的了解给大家~