您的位置:首页 > 游戏 > 手游 > JSON.stringify 和 JSON.parse

JSON.stringify 和 JSON.parse

2024/12/23 16:17:20 来源:https://blog.csdn.net/Oxford1151/article/details/141360363  浏览:    关键词:JSON.stringify 和 JSON.parse

JSON.stringify 是一个将 JavaScript 对象转换为 JSON 字符串的方法,它有三个参数:

JSON.stringify(value, replacer, space)

参数详解

  1. value (必需):

    • 这是你想要转换为 JSON 字符串的 JavaScript 对象或数组。
    • 例如:JSON.stringify({ name: "Alice", age: 25 })
  2. replacer (可选):

    • 这个参数可以是一个函数或数组,用来选择或改变对象属性的字符串化过程。
    • 如果是一个函数,它将在每个键值对上调用,可以用来筛选或改变值。
    • 如果是一个数组,它指定哪些属性应该包含在最终的 JSON 字符串中。
    • 如果省略此参数,则将对对象的所有属性进行字符串化。
    • 示例:

      • 函数形式
JSON.stringify({ name: "Alice", age: 25 }, (key, value) => {if (typeof value === 'number') {return undefined; // 过滤掉数值型属性}return value;
});
// 输出: {"name":"Alice"}

                        2. 数组形式

JSON.stringify({ name: "Alice", age: 25, gender: "female" },["name", "gender"]);
// 输出: {"name":"Alice","gender":"female"}

3.space (可选):

  • 这个参数用于控制输出的 JSON 字符串的缩进,主要用于格式化输出,使其更易读。
  • 如果传递一个数字(如 2),每一层嵌套将缩进相应数量的空格。
  • 如果传递一个字符串(如 "\t"),将使用该字符串作为缩进。
  • 如果为 null 或者省略,输出的 JSON 字符串将是没有任何缩进或换行的紧凑形式。

示例

  • 数字形式
JSON.stringify({ name: "Alice", age: 25 }, null, 2);

   · 字符串形式

JSON.stringify({ name: "Alice", age: 25 }, null, "\t");

JSON.parse 是一个将 JSON 字符串转换为 JavaScript 对象的方法。它有两个参数:

JSON.parse(text, reviver)

参数详解

  1. text (必需):

    • 这是一个有效的 JSON 字符串,需要被解析成 JavaScript 对象
    • JSON 字符串必须使用双引号 " 包围键和字符串值,并且必须是有效的 JSON 格式,否则会抛出 SyntaxError 异常。
    • 例如:'{"name": "Alice", "age": 25}' 是一个有效的 JSON 字符串。
  2. reviver (可选):

    • 这是一个可选的函数参数,可以用来逐个检查或转换解析后的对象的每个属性值
    • 如果提供了 reviver 函数,它会为对象的每个键值对调用,并且可以返回一个修改后的值,或者如果返回 undefined,则该属性将被从最终结果中删除。
    • reviver 函数接收两个参数:key(当前属性的键)和 value(当前属性的值)。

    示例

const jsonString = '{"name": "Alice", "age": 25}';// 解析 JSON 字符串并使用 reviver 函数来过滤属性
const parsedObject = JSON.parse(jsonString, (key, value) => {if (typeof value === 'number') {return value * 2; // 将数值属性加倍}return value; // 返回原始值
});console.log(parsedObject);
// 输出: { name: "Alice", age: 50 }

   

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com