JSON

171 阅读2分钟

描述

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 文本的对象/值。

注意
  • 解析含较大数值会丢失精度。

image.png

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(){}) or JSON.stringify(undefined)
  • NaN 和 Infinity 格式的数值及 null 都会被当做 null。
  • 转换值如果有 toJSON() 方法,该方法定义什么值将被序列化。

image.png

参考文章地址:developer.mozilla.org/zh-CN/docs/…