背景
目前前后端的数据传递普遍用 JSON,但仍有些后端同学返回的数据格式不标准(此处暂不考虑和后端扯皮强势让其修复的因素),那拿到了这种非标准化的数据格式,前端就手足无措了么,这是不应该的。
如后端返回的一段 JSON 数据结构如下
1 | { |
JSON(Javascript Object Notation)
定义:JSON 是一种语法,用来序列化对象、数组、数值、字符串、布尔值、null
JSON.parse()
JSON.parse(text [,reviver])
解析 JSON 字符串,提供可选的 reviver 函数,用以在返回值之前对所得到的对象执行变换操作
注意:
- JSON.parse() 不允许用逗号作为结尾
1 | JSON.parse("[1,2,3,]") |
- 如果传入的 JSON 字符串被解析后是对象类型:
- 对象的 key, value(字符串需要) 必须用 “”(双引号)包裹
- 整个传入的 JSON 字符串 被 ‘’(单引号)包裹
1 | const json = '{"name": "wuyanbin", "age": 12}' |
如果传入的 JSON 字符串被解析后是数组(也是对象类型):
- 若数组中的元素类型是 非字符串(不包括对象中的 key, value) 类型,使用 “”(双引号) 或者 ‘’(单引号)都可以
1 | const json = '[1,2,3]' || "[1,2,3]" |
- 若数组中的元素类型是 字符串 类型,外部必须使用 ‘’(单引号),且元素使用””(双引号)包裹
1 | const json = '["1","2","3"]' |
**
总结:
- JSON 字符串中,若对象里需要使用引号的(对象 key value, 数组 中元素的字符串值)则必须使用双引号,外部必须使用单引号
- 若 JSON 字符串中对象里不需要使用引号,则外部使用单引号和双引号都可以