我有一个 JSON 对象,正在提交给 AWS Lambda NodeJS 函数。这个 JSON 对象在将其插入 MySQL 数据库之前需要转义的字段之一中有一个撇号。
该对象需要保持完整,因为它作为 JSON 对象存储在数据库中。我研究过字符串替换函数,但这些函数不起作用,因为它本身就是一个 JSON 对象。
我确信这里有一个简单的答案,我只是对 NodeJS 很陌生,在搜索了几个小时后还没有找到方法。提前致谢!
我需要更新的字段是下面的2.1:
BAD JSON 对象示例:
{
"field1": "ABCD1234DEFG4567",
"field2": "FBI",
"fieldgroup": {
"1.1": "ABCD",
"1.2": 20170721,
"1.3": "ABCD",
"2.1": "L'astName, FirstName M"
}
}
FINAL JSON 对象示例:
{
"field1": "ABCD1234DEFG4567",
"field2": "FBI",
"fieldgroup": {
"1.1": "ABCD",
"1.2": 20170721,
"1.3": "ABCD",
"2.1": "L''astName, FirstName M"
}
}
最佳答案
const o = {
"field1": "ABCD1234DEFG4567",
"field2": "FBI",
"fieldgroup": {
"1.1": "ABCD",
"1.2": 20170721,
"1.3": "ABCD",
"2.1": "L'astName, FirstName M"
}
};
const preparedObject = prepare(o);
console.log(JSON.stringify(preparedObject, null, 4));
function prepare(o) {
const replacedStrings = Object.keys(o)
.filter(key => typeof o[key] === "string")
.reduce((accu, key) => ({ ...accu, [key]: o[key].replace("'", "''") }), {});
const preparedChildren = Object.keys(o)
.filter(key => typeof o[key] === "object")
.reduce((accu, key) => ({ ...accu, [key]: prepare(o[key]) }), {});
return { ...o, ...replacedStrings, ...preparedChildren };
}
关于javascript - 使用 NodeJS 更新 JSON 对象中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45245626/