描述
JSON是一种语法,用来序列化对象、数组、数值、字符串、布尔值和null。它基于JavaScript,但是与之不同,JSON不是JavaScript,JavaScript也不是JSON。
| JavaScript类型 | JSON不同点 |
|---|---|
| 对象和数组 | 属性名称必须是双引号括起来的字符串;最后一个属性后不能有逗号。 |
| 数值 | 禁止出现前导零(JSON.stringify 方法自动忽略前导零,而在 JSON.parse 方法中将会抛出 SyntaxError);如果有小数点,则后面至少跟着一位数字。 |
| 字符串 | 只有有限的一些字符可能会被转义;禁止某些控制字符;Unicode 行分隔符(U+2028)和段分隔符(U+2029)被允许 ; 字符串必须用双引号括起来。 |
方法
JSON.parse()
解析JSON字符串。
JSON.parse(text[, reviver])
参数
`text` 要被解析成 JavaScript 值的字符串。
`reviver` 转换器,如果传入该参数 (函数),可以用来修改解析生成的原始值,调用时机在 parse 函数返回之前。
返回值
object 类型, 对应给定 JSON 文本的对象/值。
注意
- 解析含较大数值会丢失精度。
JSON.stringify()
将一个 JavaScript 对象或值转换为 JSON 字符串。
JSON.stringify(value[, replacer [, space]])
参数
`value` 将要序列化成 一个 JSON 字符串的值。
`replacer` 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。
`space` 指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为 10。该值若小于 1,则意味着没有空格;如果该参数为字符串(当字符串长度超过 10 个字母,取其前 10 个字母),该字符串将被作为空格;如果该参数没有提供(或者为 null),将没有空格。
返回值
给定值的 JSON 字符串。
注意
undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成null(出现在数组中时)。函数、undefined 被单独转换时,会返回 undefined,如JSON.stringify(function(){})orJSON.stringify(undefined)。- NaN 和 Infinity 格式的数值及 null 都会被当做 null。
- 转换值如果有 toJSON() 方法,该方法定义什么值将被序列化。