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的了解给大家~

本文链接:

http://godrry.com/archives/json-manual.html
1 + 8 =
沙发还热乎呢~