javascript - 使用 NodeJS 更新 JSON 对象中的值

标签 javascript json node.js

我有一个 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/

相关文章:

javascript - Web 组件(JavaScript 原生)可以注册在 HTML 主体的末尾吗?

javascript - 在 Deno 中使用 linter/linting 工具

java - 编码对 JSON 重要吗?

javascript - 浏览器唯一键

node.js - Redis 无法在 CentOS 上运行

javascript - 用于同一页面上多个表单的简单可重用 javascript 平均函数

javascript - 是否可以在文档准备好之前进行一些客户端 DOM 操作?

json - jq:打印对象中每个条目的键和值

javascript - 以python 'JSON Array of arrays'格式遍历 'List of lists'

node.js - 安装的软件包的大小或数量是否会影响服务器性能