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

标签 javascript json node.js

我已经尝试了几个小时来做​​到这一点,我看到的大多数问题和示例都没有解决我的问题,例如 This one here正在谈论键,而不是值。

我厌倦了使用 JSON 解析器,但有两个问题:

  1. 首先如何迭代这些值?我知道读取键有不同的方法,但是值和嵌套值又如何(假设我们不知道键或值的名称)。
  2. 如何实际写入值并替换它,而不是替换整个文件,可能类似于:

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

我正在寻找一种适用于任何 JSON 文件的解决方案,但完全不知道 key 的名称。

最佳答案

您可以使用replace直接对JSON字符串进行操作:

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

这将使您不必解析 JSON,并且可能会更快一些。不过,编写一个高性能的综合正则表达式可能很困难,因此解析 JSON 并编写一些递归函数可能会更安全:

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)

关于javascript - 如何使用 Express Node.JS 将 JSON 文件属性值大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47021090/

相关文章:

javascript基于另一个更大的数组创建具有固定长度的对象数组

c# - Newtonsoft.Json.Schema.JsonSchema 已过时?

javascript - 可以使用 Node.js 通过 Google API 在 map 上进行真正的实时更新

javascript - mLab : Find all users getting db object instead of records

javascript - 如何在不使用事件总线的情况下在另一个组件中获取一个组件中的数据属性的值?

JavaScript:如何删除包含特定字符串的行

javascript - 点击事件仅适用于表格的第一页

ruby-on-rails - 我如何用 JSON 响应一些 http GET 请求和 HTML 响应其他请求?

java - 有没有办法直接在AS3脚本和Apache Derby数据库之间建立通信?

javascript - 这是在 Javascript/node.js 中执行私有(private)函数的正确方法吗?