什么是json?
===========
JSON是一种按照JavaScript对象语法的数据格式,虽然它是基于 JavaScript 语法,但它独立于JavaScript,这也是为什么许多程序环境能够读取(解读)和生成 JSON。
JSON可以作为一个对象或者字符串存在,前者用于解读 JSON 中的数据,后者用于通过网络传输 JSON 数据。 这不是一个大事件——JavaScript 提供一个全局的 可访问的 JSON 对象来对这两种数据进行转换。
一个 JSON 对象可以被储存在它自己的文件中,这基本上就是一个文本文件,扩展名为 .json, 还有 MIME type 用于 application/json.
JSON结构
我们已经可以推测出 JSON 对象就是基于 JavaScript 对象,而且这几乎是正确的。您可以把 JavaScript 对象原原本本的写入 JSON 数据——字符串,数字,数组,布尔还有其它的字面值对象。这允许您构造出一个对象树,如下:
{
"squadName" : "Super hero squad",
"homeTown" : "Metro City",
"formed" : 2016,
"secretBase" : "Super tower",
"active" : true,
"members" : [
{
"name" : "Molecule Man",
"age" : 29,
"secretIdentity" : "Dan Jukes",
"powers" : [
"Radiation resistance",
"Turning tiny",
"Radiation blast"
]
},
{
"name" : "Madame Uppercut",
"age" : 39,
"secretIdentity" : "Jane Wilson",
"powers" : [
"Million tonne punch",
"Damage resistance",
"Superhuman reflexes"
]
},
{
"name" : "Eternal Flame",
"age" : 1000000,
"secretIdentity" : "Unknown",
"powers" : [
"Immortality",
"Heat Immunity",
"Inferno",
"Teleportation",
"Interdimensional travel"
]
}
]
}
如果我们要加载对象进入 JavaScript 程序,以保存为一个名为
superHeroes
对象为例,我们使用 . 或 [] 访问对象内的数据(关于. 和 []概念,见
对象基础
)。如:
superHeroes.homeTown
//"Metro City"
superHeroes["active"]
//true
为了访问对象中的对象,您只需简单地链式访问(通过属性名和数组索引)。例如,访问 superHeroes 对象中的 members 数组对象的第二个元素的 powers 数组对象的第三个元素,您可以这样做:
superHeroes["members"][1]["powers"][2]
//"Superhuman reflexes"
- 首先我们有变量名
superHeroes
,储存对象 。 - 在对象中我们想访问
members
属性,所以我们使用["members"]
。 members
包含有对象数组,我们想要访问第二个元素,所以我们使用[1]
。- 在对象内,我们想访问
powers
属性,所以我们使用["powers"]
。 powers
属性是一个包含英雄技能的数组。我们想要第三个,所以我们使用[2]
注意事项:
========
- JSON 是一种纯数据格式,它只包含属性,没有方法。
- JSON 要求有两头的 { } 来使其合法。最安全的写法是有两边的括号,而不是一边。
- 甚至一个错位的逗号或分号就可以导致 JSON 文件出错。您应该小心的检查您想使用的数据(虽然计算机生成的 JSON 很少出错,只要生成程序正常工作)。您可以通过像 JSONLint 的应用程序来检验 JSON。
- JSON 可以将任何标准合法的 JSON 数据格式化保存,不只是数组和对象。比如,一个单一的字符串或者数字可以是合法的 JSON 对象。虽然不是特别有用处……
- 不像 JavaScript 标识符可以用作属性,在 JSON 中,只有字符串才能用作属性。
方法:
JSON.parse()
解析一个JSON字符串,可选地转换生成的值及其属性,并返回值;
JSON.stringify()
返回与指定值相对应的一个JSON字符串,可选的仅包含某些属性或者以用户定义的方式替换属性值;