我有一个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"
}
}
答案 0 :(得分:2)
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 };
}
答案 1 :(得分:2)
如果您将值作为JSON获取,请在JSON上执行字符串替换并作为Object返回,这应该可以。
let escapeSingleQuotes = json => {
return JSON.parse(json.replace(/'/, "''"))
}
如果你想从JS对象中删除单引号,它与上面相同但是,首先转换为字符串然后返回到对象
let escapeSingleQuotes = obj => {
return JSON.parse(JSON.stringify(obj).replace(/'/, "''"))
}