如何使用 JSON.parse() 和 JSON.stringify()
英文 | https://www.digitalocean.com/community/tutorials/js-json-parse-stringify
翻译 | 杨小爱
let userStr = '{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}';
let userObj = JSON.parse(userStr);
console.log(userObj);
执行此代码将产生以下输出:
Output{name: 'Sammy', email: 'sammy@example.com', plan: 'Pro'}
email: "sammy@example.com"
name: "Sammy"
plan: "Pro"
尾随逗号在 JSON 中无效,因此,如果传递给它的字符串有尾随逗号,则 JSON.parse() 会引发错误。
JSON.parse() 可以将函数作为第二个参数,该函数可以在返回对象值之前对其进行转换。
在这里,对象的值在 parse 方法的返回对象中转换为大写:
let userStr = '{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}';
let userObj = JSON.parse(userStr, (key, value) => {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
});
console.log(userObj);
执行此代码将产生以下输出:
Output{name: 'SAMMY', email: 'SAMMY@EXAMPLE.COM', plan: 'PRO'}
email: "SAMMY@EXAMPLE.COM"
name: "SAMMY"
plan: "PRO"
这些值已转换为大写字符。
JSON.stringify()
JSON.stringify() 接受一个 JavaScript 对象并将其转换为 JSON 字符串。
let userObj = {
name: "Sammy",
email: "sammy@example.com",
plan: "Pro"
};
let userStr = JSON.stringify(userObj);
console.log(userStr);
执行此代码将产生以下输出:
Output{"name":"Sammy","email":"sammy@example.com","plan":"Pro"}
JSON.stringify() 可以接受两个额外的参数。 第一个是替换功能。 第二个是字符串或数字值,用作返回字符串中的空格。
replacer 函数可用于过滤掉值,因为任何作为 undefined 返回的值都将在返回的字符串之外:
let userObj = {
name: "Sammy",
email: "sammy@example.com",
plan: "Pro"
};
function replacer(key, value) {
console.log(typeof value);
if (key === 'email') {
return undefined;
}
return value;
}
let userStrReplacer = JSON.stringify(userObj, replacer);
console.log(userStrReplacer);
执行此代码将产生以下输出:
Output{"name":"Sammy","plan":"Pro"}
电子邮件键值对已从对象中删除。
还有一个传入空间参数的示例:
let userObj = {
name: "Sammy",
email: "sammy@example.com",
plan: "Pro"
};
let userStrSpace = JSON.stringify(user, null, '...');
console.log(userStrSpace);
执行此代码将产生以下输出:
Output{
..."name": "Sammy",
..."email": "sammy@example.com",
..."plan": "Pro"
}
缩进已被替换为...
总结
在今天的教程中,我们使用了 JSON.parse() 和 JSON.stringify() 方法。
学习更多技能
请点击下方公众号
评论