JSON学习

概念

JSON 全称为 JavaScript Object Notation,是一种轻量级的数据交换格式。

结构和语法

标准key:value格式,建议使用双引号,因为大多数JSON解析器使用双引号解析JSON对象

解析和序列化

JSON.parse():将数据转化为javascript对象

JSON.stringify():将javascript对象转换为字符串

JSON.parse()

JSON.parse(text, reviver)

  • text:必需,有效的json字符串
  • reviver:可选,一个转换结果的回调函数,对象的每个成员调用此函数

JSON.stringify()

JSON.stringify(value, replacer, space)

  • value:必需,要转换的javascript值(数组或对象)
  • replacer:可选
    • 为函数:将成员的键和值传入函数,使用返回值而不是原始值。如果返回undefined,则排除成员。根对象的键是一个空字符串
    • 为数组:则仅转换该数组中具有键值的成员。
  • space:可选,文本添加缩进、空格和换行符,如果space为数字,则返回值文本在每个级别缩进 2 个空格。大于10的时候,缩进10个空格。最大为十。如果缩进是一个字符串而不是空格,就可以传入需要缩进的填充字符串

异常处理

建议使用try…catch包裹,避免因为不规范的json结构阻碍程序运行

其他操作

删除键值对

使用delete运算符删除JSON中的键值对:

const json = {"name": "zhangsan", "age": 18, "city": "beijing"};

delete json.city;
 
console.log(json);  // {name: 'zhangsan', age: 18}

访问数组项

使用方括号【】和索引从JSON中访问数组项

const json = {
  "name": "zhangsan",
  "age": 18,
  "job": ["React", "JavaScript"],
};

console.log(json.job[0]); // React

遍历数组项

使用for循环

const json = {
  "name": "zhangsan",
  "age": 18,
  "job": ["React", "JavaScript"],
};

for (item of json.job) {
    console.log(item);  // React JavaScript
}

本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。