如何使用Express Node.JS大写JSON文件属性值?

我一直在尝试几个小时来做​​到这一点,我所看到的大多数问题和例子都没有解决我的问题,例如这里的一个是关于键,而不是数值。

我厌倦了使用JSONparsing器,但有两个问题:

  1. 我如何迭代通过值开始? 我知道有不同的方法来读取键,但值和嵌套值(因为我们不知道什么是关键或值被称为)什么。
  2. 如何实际编写值并replace它,而不是replace整个文件,可能是这样的:

    key.value = key.value.toUpper();

我正在寻找一个适用于任何JSON文件的解决scheme,绝对不知道密钥被调用的是什么。

你可以使用replace来直接对JSONstring进行操作:

 jsonString.replace(/"\s*:\s*"[^"]/g, match => { return match.slice(0, -1) + match[match.length - 1].toUpperCase() }) 

这将使您无需parsingJSON,而且可能会更快一些。 尽pipe编写一个完整的正则expression式可能很难,所以parsingJSON并写一个recursion函数可能更安全:

 const uppercaseValues = obj => { return Object.keys(obj).reduce((uppercased, key) => { const value = obj[key] if (typeof value === 'string') { uppercased[key] = value[0].toUpperCase() + value.slice(1) } else if (typeof value === 'object') { uppercased[key] = uppercaseValues(value) } else { uppercased[key] = value } return uppercased }, {}) } const parsedJson = JSON.parse(jsonString) const uppercased = uppercaseValues(parsedJson) const xformedJson = JSON.stringify(uppercased)