关于 JSON,最重要的是要理解它是一种数据格式,不是一种编程语言。
JSON 的语法可以表示以下三种类型的值:
简单值:使用与 JavaScript 相同的语法,可以在 JSON 中表示字符串、数值、布尔值和 null。但 JSON 不支持 JavaScript 中的特殊值 undefined。
对象:对象作为一种复杂数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂数据类型的值。
数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型–简单值、对象或数组。
最简单的 JSON 数据形式就是简单值,JSON 表示数值 5 的方式:
5 |
JSON 表示字符串的方式:
"Hello world!" |
JavaScript 字符串与 JSON 字符串的最大区别在于, JSON 字符串必须使用双引号(单引号会导致语法错误)。
与 JavaScript 的对象字面量相比, JSON 对象有两个地方不一样。
首先,没有声明变量( JSON 中没有变量的概念)。
其次,没有末尾的分号(因为这不是 JavaScript 语句,所以不需要分号)。
{ "name": "Nicholas", "age": 29 } |
对象的属性必须加双引号,这在 JSON 中是必需的。属性的值可以是简单值,也可以是复杂类型值。可以像下面这样在对象中嵌入对象:
{ "name": "Nicholas", "age": 29, "school": { "name": "Merrimack College", "location": "North Andover, MA" } } |
同一个对象中绝对不应该出现两个同名属性。
JSON 表示同一个数组:
[25, "hi", true] |
JSON 数组也没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合。
[ { "title": "Professional JavaScript", "authors": [ "Nicholas C. Zakas" ], edition: 3, year: 2011 }, { "title": "Professional JavaScript", "authors": [ "Nicholas C. Zakas" ], edition: 2, year: 2009 } ] |
这个数组中包含一些表示图书的对象。每个对象都有几个属性,其中一个属性是”authors” ,这个属性的值又是一个数组。
对象和数组通常是 JSON 数据结构的最外层形式(当然,这不是强制规定的),利用它们能够创造出各种各样的数据结构。
ECMAScript 5 对解析 JSON 的行为进行规范,定义了全局对象 JSON。支持这个对象的浏览器有 IE 8+、 Firefox 3.5+、 Safari 4+、 Chrome和 Opera 10.5+。
对于较早版本的浏览器,可以使用一个 shim: https://github.com/douglascrockford/JSON-js
JSON 对象有两个方法: stringify() 和 parse() 。在最简单的情况下,这两个方法分别用于把JavaScript 对象序列化为 JSON 字符串和把 JSON 字符串解析为原生 JavaScript 值。
JSON.stringify() 把一个 JavaScript 对象序列化为一个 JSON 字符串,然后将它保存在变量 jsonText 中。
在序列化 JavaScript 对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为undefined 的任何属性也都会被跳过。结果中最终都是值为有效 JSON 数据类型的实例属性。
将 JSON 字符串直接传递给 JSON.parse() 就可以得到相应的 JavaScript 值。
如果传给 JSON.parse() 的字符串不是有效的 JSON,该方法会抛出错误。
JSON.stringify() 方法的第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那它表示的是每个级别缩进的空格数。
var jsonText = JSON.stringify(book, null, 4); |
© admin for 可乐吧, 2015. |
Permalink |
No comment |
Add to
del.icio.us
Post tags: json学习
您可能也喜欢: |
laravel 学习 Schema 小记 |
JSON到底是什么? |
Yeoman构建webapp生成的package.json注解 |
laravel 学习之创建 todo 笔记 |
无觅 |
Feed enhanced by Better Feed from Ozh