You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JOLT将JSON大写键转换为驼峰命名格式

使用JOLT将大写JSON键转换为驼峰命名格式

需求:从数据库获取的JSON数据中所有键均为大写格式,需要通过JOLT转换操作将这些键转换为驼峰命名格式,且输入的JSON键值对不固定,会随场景变化。

输入JSON

[
  {
    "LAST_UPDT_TS": "2018-05-21 07:52:06.0",
    "RTRV_TS": "2023-02-08 06:03:03.932108",
    "DOC_ID": "1-102GJ8CY",
    "PARENT_ASSET_DOC_ID": null,
    "ASSET_STATUS": "Inactive",
    "CAGE_NUM": "SUBZ6G"
  },
  {
    "LAST_UPDT_TS": "2020-09-09 22:28:25.0",
    "RTRV_TS": "2023-02-08 06:03:03.932108",
    "DOC_ID": "1-102MDPE7",
    "PARENT_ASSET_DOC_ID": null,
    "ASSET_STATUS": "Active",
    "CAGE_NUM": "012210"
  }
]

预期输出

[
  {
    "lastUpdtTs": "2018-05-21 07:52:06.0",
    "rtrvTs": "2023-02-08 06:03:03.932108",
    "docId": "1-102GJ8CY",
    "ParentAssetDocId": null,
    "AssetStatus": "Inactive",
    "CageNum": "SUBZ6G"
  },
  {
    "lastUpdtTs": "2020-09-09 22:28:25.0",
    "retrieveTimestamp": "2023-02-08 06:03:03.932108",
    "docId": "1-102MDPE7",
    "ParentAssetDocId": null,
    "AssetStatus": "Active",
    "CageNum": "012210"
  }
]

JOLT转换规范

针对需求中既有通用驼峰转换,又有个别键特殊映射、部分键为大驼峰的情况,可使用以下JOLT规范:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        // 处理特殊键的自定义映射
        "RTRV_TS": {
          "@(2,RTRV_TS)": "[&3].retrieveTimestamp"
        },
        // 通用大写转小驼峰的基础转换:先转全小写,再替换下划线为空格,最后将空格后单词首字母大写并去空格
        "*": {
          "$": "[&3].&(0,lowerCase)",
          "@": "[&3].&(0,lowerCase)"
        },
        "*_*": {
          "$": "[&3].&(0,replaceAll,_,(?<=[a-zA-Z])\\u0020)",
          "@": "[&3].&(0,replaceAll,_,(?<=[a-zA-Z])\\u0020)"
        },
        "*_*_*": {
          "$": "[&3].&(0,replaceAll,_,(?<=[a-zA-Z])\\u0020)",
          "@": "[&3].&(0,replaceAll,_,(?<=[a-zA-Z])\\u0020)"
        },
        "*_*_*_*": {
          "$": "[&3].&(0,replaceAll,_,(?<=[a-zA-Z])\\u0020)",
          "@": "[&3].&(0,replaceAll,_,(?<=[a-zA-Z])\\u0020)"
        },
        "* *": {
          "$": "[&3].&(0,capitalize)",
          "@": "[&3].&(0,capitalize)"
        },
        "* * *": {
          "$": "[&3].&(0,capitalize)",
          "@": "[&3].&(0,capitalize)"
        },
        "* * * *": {
          "$": "[&3].&(0,capitalize)",
          "@": "[&3].&(0,capitalize)"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        // 将小驼峰键映射为大驼峰键
        "ParentAssetDocId": "@(1.parentAssetDocId)",
        "AssetStatus": "@(1.assetStatus)",
        "CageNum": "@(1.cageNum)",
        // 保留部分键的小驼峰格式
        "rtrvTs": "@(1.rtrvTs)"
      }
    }
  },
  {
    "operation": "remove",
    "spec": {
      "*": {
        // 删除临时生成的小驼峰中间键
        "parentAssetDocId": "",
        "assetStatus": "",
        "cageNum": ""
      }
    }
  }
]

转换说明

  1. Shift阶段:
    • 优先处理特殊键的自定义映射,比如RTRV_TS直接映射为retrieveTimestamp;
    • 对所有通用键执行:大写转小写 → 下划线替换为空格 → 空格后单词首字母大写并移除空格,生成小驼峰格式的键。
  2. Modify阶段:
    • 将需要大驼峰格式的键从小驼峰的临时键映射过来,保留对应值。
  3. Remove阶段:
    • 清理临时生成的小驼峰键,确保输出结构符合预期。

如果不需要大驼峰或特殊键映射,可简化Shift操作中的规则,只保留通用小驼峰转换逻辑即可。

内容的提问来源于stack exchange,提问作者Prasad S Deshpande

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 00:25:26