如何将 json 属性 名称从蛇形转换为驼峰式

How to convert json property names from snake to camel case

我有一个这样的 json 文档...我正在尝试将 属性 名称(不是值)从蛇形格式转换为驼色格式。

例如 - message_type_id 到 messageTypeId 和 _id 到 id 和 point_altitude 到 pointAltitude

{
  "@version": "1",
  "point_altitude": 530,
  "_id": "3325",
  "header": {
    "raw_message": "",
    "message_type_id": "ping_event"
   }

}

我试过查找 ((\w)[_]{1,1}([a-z]{1,1})) 并替换 \U

但这也会改变值。我还尝试通过在查找的末尾添加 .+?(?=\:) 来使用正向先行,但这会停止在 属性 名称中找到任何第二个下划线。

https://regex101.com/r/jK5mP3/14

使用单个正则表达式替换来执行此操作是可能的,但可能不是最佳选择。尝试

(?<=[\w])(?:_([a-z]))([^_"]*+)(?!"\s)|"_([a-z]+)"

Demo

我宁愿建议解析 JSON 并简单地迭代 属性 名称。根据您的环境,您可以使用代码或像 camelize or a command-line tool like jd (e.g. this jd answer 这样的库来处理类似的问题。