javascript - 如何使用 stringify 替换器更改嵌套的 JSON 值?
问题描述
我JSON.stringify(value, replacer)
用来屏蔽 JSON 对象中的敏感数据。
const inputJsonObject =
{
"id": "uniqueId",
"value": "objectData",
"user": {
"password": "qwerty"
}
};
const hideDataMethod = JSON.stringify(inputJsonObject, (key, value) => {
const dataToHide = ['id', 'user.password'];
return dataToHide.indexOf(key) === -1 ? value : 'xxx';
});
console.log(hideDataMethod);
如何获得user.password
价值?上述解决方案适用于id
但不适用于密码。
解决方案
它不起作用,password
因为您正在寻找一个名为 的属性"user.password"
,但没有;该属性的名称是password
,而不是user.password
。(它是一个对象上的一个属性,它被user
另一个对象上的属性引用,但这与属性名称无关。)如果您删除其中的user.
一部分,它将起作用。请注意,这样做会从正在字符串化的对象图中的所有对象中删除所有 id
和password
属性:
const inputObject = {
"id": "uniqueId",
"value": "objectData",
"user": {
"password": "qwerty"
}
};
const dataToHide = ["id", "password"];
const json = JSON.stringify(inputObject, (key, value) => {
return dataToHide.indexOf(key) === -1 ? value : "xxx";
});
console.log(json);
(我还更改了几个具有误导性名称的变量的名称。)
但我会在将其转换为 JSON之前对其进行清理,而不是在以下期间:
const tmp = {
...inputObject,
id: "xxx",
user: {
...inputObject.user,
password: "xxx",
}
};
const json = JSON.stringify(tmp);
推荐阅读
- ibm-integration-bus - IBM Integration BUS Callable Flow Throwing 异常,需要返回上下文信息
- django - Flutter google 登录验证 django social auth for google
- sas - SAS 宏变量在变量名 Proc Http 中转义撇号
- java - 我没有在电话身份验证系统中从 firebase 收到 Otp
- python - 如何在 Pygame 中修复我的球动画?
- php - 无法将 stdClass 类型的对象用作数组 ... 无缘无故
- list - 更改所选容器的颜色并取消选择?[扑]
- python - 我想在下一页显示这些图像:Django
- mongodb - 如何通过默认端口远程连接到 Mongo db 服务器?
- python - 我想知道基于行和列值的平均值