JSON 是前端开发中经常使用的数据交换格式,它有着简洁、轻量、易于阅读和编写的特点。在 ES11 中,对 JSON 的处理进行了优化,让序列化和反序列化更加易用,本文将介绍这些优化及其使用方法。
JSON 序列化优化
在 ES11 中,JSON.stringify() 方法新增了两个参数,用于控制序列化的行为:space 和 replacer。
space
space 参数用于控制 JSON 字符串的缩进,它可以是一个数字或字符串。当 space 是一个数字时,表示在每个级别缩进几个空格;当 space 是一个字符串时,表示使用该字符串作为缩进符号。
示例代码:
const obj = { a: 1, b: { c: 2 } }; const json = JSON.stringify(obj, null, 2); console.log(json);
输出结果:
{ "a": 1, "b": { "c": 2 } }
replacer
replacer 参数用于控制序列化的过程,它可以是一个函数或数组。当 replacer 是一个函数时,它会被递归地调用,用于过滤序列化的结果;当 replacer 是一个数组时,它表示仅序列化数组中指定的属性。
示例代码:
const obj = { a: 1, b: { c: 2 } }; const json = JSON.stringify(obj, (key, value) => { if (key === 'a') { return undefined; } return value; }, 2); console.log(json);
输出结果:
{ "b": { "c": 2 } }
JSON 反序列化优化
在 ES11 中,JSON.parse() 方法新增了一个参数,用于控制反序列化的行为:reviver。
reviver
reviver 参数用于控制反序列化的过程,它是一个函数,用于修改解析出来的值。该函数接收两个参数:key 和 value,分别表示当前解析的属性和属性值。
示例代码:
const json = '{"a":1,"b":{"c":2}}'; const obj = JSON.parse(json, (key, value) => { if (key === 'c') { return value * 2; } return value; }); console.log(obj);
输出结果:
{ "a": 1, "b": { "c": 4 } }
总结
ES11 对 JSON 的处理进行了优化,让序列化和反序列化更加易用。通过使用 space 和 replacer 参数,我们可以更好地控制序列化的结果;通过使用 reviver 参数,我们可以更好地控制反序列化的结果。这些优化可以帮助我们更好地处理 JSON 数据,提高开发效率和代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6510f68b95b1f8cacd959b97