简述JSON stringify

107 阅读2分钟

简述JSON stringify

JSON.stringify() 是 JavaScript 中的一个内置方法,用于将 JavaScript 对象或值转换为 JSON 格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。

语法

JSON.stringify(value, replacer, space);
  • value: 需要转换为 JSON 字符串的值(通常是对象或数组)。
  • replacer (可选):
    • 可以是一个函数,用于自定义序列化过程,选择哪些属性需要被包含在结果中。
    • 也可以是一个数组,指定需要包含的属性名。
  • space (可选):
    • 用于控制输出字符串的缩进和格式化。
    • 可以是数字(表示缩进的空格数)或字符串(用作缩进字符)。

返回值

返回一个表示给定值的 JSON 格式字符串。

基本用法

const obj = {
    name: "Alice",
    age: 25,
    isStudent: true,
    hobbies: ["reading", "coding"]
};

const jsonString = JSON.stringify(obj);
console.log(jsonString);
// 输出: {"name":"Alice","age":25,"isStudent":true,"hobbies":["reading","coding"]}

使用 replacer 函数

const obj = {
    name: "Alice",
    age: 25,
    isStudent: true
};

const jsonString = JSON.stringify(obj, (key, value) => {
    if (key === "age") return undefined; // 排除 age 属性
    return value;
});
console.log(jsonString);
// 输出: {"name":"Alice","isStudent":true}

使用 replacer 数组

const obj = {
    name: "Alice",
    age: 25,
    isStudent: true
};

const jsonString = JSON.stringify(obj, ["name", "isStudent"]);
console.log(jsonString);
// 输出: {"name":"Alice","isStudent":true}

使用 space 格式化输出

const obj = {
    name: "Alice",
    age: 25,
    isStudent: true
};

const jsonString = JSON.stringify(obj, null, 2);
console.log(jsonString);
// 输出:
// {
//   "name": "Alice",
//   "age": 25,
//   "isStudent": true
// }

注意事项

  1. 不支持的数据类型

    • undefined、函数、Symbol 值在序列化时会被忽略(如果在数组中则会被转换为 null)。
    • NaNInfinity 会被转换为 null
    • Date 对象会被转换为 ISO 格式的字符串。
  2. 循环引用

    • 如果对象中存在循环引用(即对象引用自身),JSON.stringify() 会抛出错误。
  3. 自定义序列化

    • 如果对象定义了 toJSON() 方法,JSON.stringify() 会调用该方法并使用其返回值。

示例:自定义 toJSON()

const obj = {
    name: "Alice",
    age: 25,
    toJSON() {
        return {
            name: this.name,
            isAdult: this.age >= 18
        };
    }
};

const jsonString = JSON.stringify(obj);
console.log(jsonString);
// 输出: {"name":"Alice","isAdult":true}

总结

JSON.stringify() 是将 JavaScript 对象转换为 JSON 字符串的标准方法,支持自定义序列化和格式化输出。它在数据存储、传输和 API 交互中非常常用。

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github