JS之JSON.stringfy和JSON.parse

JSON.stringifyJSON.parse 是 JavaScript 中用于处理 JSON 数据的两个非常重要的方法。它们分别用于将 JavaScript 对象转换为 JSON 字符串,以及将 JSON 字符串解析为 JavaScript 对象。

JSON.stringify

JSON.stringify 方法用于将一个 JavaScript 值(通常是对象或数组)转换为 JSON 字符串。这在需要将数据发送到服务器或存储在本地时非常有用。

语法
javascript 复制代码
JSON.stringify(value[, replacer[, space]])
  • value:要转换成 JSON 字符串的 JavaScript 值。
  • replacer(可选):一个函数或数组,用于选择性地替换值或过滤属性。
  • space(可选):用于控制缩进和空格的字符串或数字,使生成的 JSON 字符串更易读。
示例
javascript 复制代码
const obj = {
  name: "Alice",
  age: 25,
  hobbies: ["reading", "swimming"]
};

// 基本用法
const jsonString = JSON.stringify(obj);
console.log(jsonString); // 输出: {"name":"Alice","age":25,"hobbies":["reading","swimming"]}

// 使用 replacer 函数
const jsonStringWithReplacer = JSON.stringify(obj, (key, value) => {
  if (key === "age") {
    return undefined; // 过滤掉 age 属性
  }
  return value;
});
console.log(jsonStringWithReplacer); // 输出: {"name":"Alice","hobbies":["reading","swimming"]}

// 使用 space 参数
const prettyJsonString = JSON.stringify(obj, null, 2);
console.log(prettyJsonString);
/* 输出:
{
  "name": "Alice",
  "age": 25,
  "hobbies": [
    "reading",
    "swimming"
  ]
}
*/

JSON.parse

JSON.parse 方法用于将 JSON 字符串解析为 JavaScript 对象。这在从服务器接收 JSON 数据或从本地存储读取 JSON 数据时非常有用。

语法
javascript 复制代码
JSON.parse(text[, reviver])
  • text:要解析的 JSON 字符串。
  • reviver(可选):一个函数,用于在返回最终结果之前对解析出的对象进行修改。
示例
javascript 复制代码
const jsonString = '{"name":"Alice","age":25,"hobbies":["reading","swimming"]}';

// 基本用法
const obj = JSON.parse(jsonString);
console.log(obj); // 输出: { name: 'Alice', age: 25, hobbies: [ 'reading', 'swimming' ] }

// 使用 reviver 函数
const objWithReviver = JSON.parse(jsonString, (key, value) => {
  if (key === "age") {
    return value * 2; // 修改 age 属性
  }
  return value;
});
console.log(objWithReviver); // 输出: { name: 'Alice', age: 50, hobbies: [ 'reading', 'swimming' ] }

注意事项

  1. 循环引用 :如果对象中存在循环引用,JSON.stringify 会抛出错误。例如:

    javascript 复制代码
    const obj = {};
    obj.self = obj;
    console.log(JSON.stringify(obj)); // 抛出 TypeError: Converting circular structure to JSON
  2. 非标准类型JSON.stringify 不能处理一些非标准的 JavaScript 类型,如 undefined、函数和 Symbol。这些值会被忽略或转换为 null

  3. 日期类型 :日期对象会被转换为 ISO 格式的字符串。如果你希望以其他格式处理日期,可以使用 replacer 函数。

  4. reviver 函数reviver 函数在解析过程中逐个键值对调用,可以用来修改解析后的对象。

总结

  • JSON.stringify 将 JavaScript 对象转换为 JSON 字符串。
  • JSON.parse 将 JSON 字符串解析为 JavaScript 对象。
  • 可以通过 replacerreviver 函数来定制转换和解析过程。
  • 注意处理循环引用和非标准类型的特殊情况。
相关推荐
不知名的老吴4 分钟前
返回多个值:让函数输出更丰富又不复杂
开发语言·python
larance6 分钟前
python包 解压修改后重新打成whl 包
开发语言·python
551只玄猫10 分钟前
【数学建模 matlab 实验报告7】微分方程和差分方程
开发语言·数学建模·matlab·课程设计·实验报告
萤火阳光33 分钟前
43|Python 异步生态深度:aiohttp/aiomysql/aioredis 全链路异步实战
开发语言·网络·python
妖萌妹儿37 分钟前
postman怎么做参数化批量测试,测试不同输入组合
开发语言·javascript·postman
酉鬼女又兒40 分钟前
零基础快速入门前端ES6 核心特性详解与蓝桥杯 Web 考点实践(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·职场和发展·蓝桥杯·es6·css3·html5
计算机安禾42 分钟前
【数据结构与算法】第23篇:树、森林与二叉树的转换
c语言·开发语言·数据结构·c++·线性代数·算法·矩阵
chushiyunen43 分钟前
大模型评测、质量保证、datasets数据集、LmEval工具
开发语言·python
伯恩bourne44 分钟前
SpringDoc OpenAPI 3 常用注解详解
java·开发语言
Zk.Sun1 小时前
【RK3588 Mali610 适配 Qt6 】
前端·javascript·vue.js