什么是 JSON?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON 是一种嵌套层级结构,可以通过 JavaScript 进行解析。
在 JSON 中:
- 数据是以键值对的形式存储的
- 不同数据项之间以逗号分隔,最后一个数据项后面不需要逗号
- 通过大括号来保存 JSON 对象
- 在 JSON 对象内容,数据的值也可以是数组,通过中括号来保存数组
JSON 的值
JSON 的值可以是以下数据结构:
- 数值(整数或浮点数)
- 字符串(在双引号中):是由双引号包围的任意数量 Unicode 字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
- 逻辑值(true 或 false)
- 数组(在中括号中):一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
- 对象(在大括号中):数组是值(value)的有序集合。对象是一个无序的“‘名称 / 值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称 / 值’ 对”之间使用“,”(逗号)分隔。
- null
JSON 对象方法
JSON.stringify()
JSON.stringify() 方法用于将一个字符串转为 JSON 字符串。该字符串符合 JSON 格式,并且可以被 JSON.parse() 方法还原。
JSON.parse()
JSON.parse() 方法用于将 JSON 字符串转换成对应的值。
JSON 和 JavaScript 的关系
JSON 是依据 JavaScript 文字对象表示法的子集所创建的数据交换格式。
JavaScript 的对象是面向对象语言的一种表示方式,Json 则是数据传输的一种格式(比如 XML),所以二者之间在定义上没有很大关系;但是二者的格式书写非常相似(有一个细节就是:JS 对象的 key 是可以使用引号也可以不使用;可是 Json 格式则必须对 key 使用引号),所以 JS 对象与 Json 非常容易转换。
JSON 和 JavaScript 类型的区别
JavaScript 类型 | JSON 的不同点 |
---|---|
对象和数组 | 属性名称必须是双引号括起来的字符串;最后一个属性后不能有逗号。 |
数值 | 禁止出现前导零,JSON.stringify 方法自动忽略前导零,而在 JSON.parse 方法中将会抛出 SyntaxError;如果有小数点, 则后面至少跟着一位数字。 |
字符串 | 字符串必须用 双引号 括起来, 只支持某些空白字符:制表符,回车,换行,空格 |
JSON 的适用场景
- API 外部访问接口,一般数据交互格式通常为 JSON
- Ajax 中实现异步加载