首页 > 解决方案 > 如何将json属性名称从蛇转换为骆驼大小写

问题描述

我有一个像这样的 json 文档......我正在尝试将属性名称(而不是值)从蛇形大小写转换为骆驼形。

ex - 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}))和替换$1\U$2

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

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

标签: regexregex-negation

解决方案


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

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

演示

我宁愿建议解析 JSON 并简单地迭代属性名称。根据您的环境,您可以使用代码或camelize 之类的库或jd之类的命令行工具(例如,此jd 答案处理类似的问题)。


推荐阅读