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

JOLT转换:重命名含@特殊字符键的规则编写及报错解决

JOLT转换规则解决键名含@的重命名问题

问题场景

需要将JSON中带@的键Company@1重命名为CompanyTest,Age重命名为AgeTest,其余键保留,但原规则因键中@不在开头触发报错。

报错信息

Error running the Transform.

JOLT Chainr encountered an exception constructing Transform className:com.bazaarvoice.jolt.Shiftr at index:0.

Invalid key:Company@1 can not have an @ other than at the front.

输入JSON

[
  {
    "C": "p",
    "ID": 1,
    "Company@1": "Tesla",
    "Age": 30.2,
    "Year": 1996,
    "Time": "22/10/1996"
  },
  {
    "C": "p",
    "ID": 2,
    "Company@1": "Facebook",
    "Age": 40.5,
    "Year": 2001,
    "Time": "22/10/2001"
  }
]

预期输出

[ {
  "C" : "p",
  "ID" : 1,
  "CompanyTest" : "Tesla",
  "AgeTest" : 30.2,
  "Year" : 1996,
  "Time" : "22/10/1996"
}, {
  "C" : "p",
  "ID" : 2,
  "CompanyTest" : "Facebook",
  "AgeTest" : 40.5,
  "Year" : 2001,
  "Time" : "22/10/2001"
} ]

解决方案

JOLT的Shiftr操作会将键名中的@识别为特殊语法,因此需要对@进行转义处理。修正后的规则如下:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "Company\\@1": "[#2].CompanyTest",
        "Age": "[#2].AgeTest",
        "*": "[#2].&"
      }
    }
  }
]

规则说明

  • 对Company@1中的@添加反斜杠转义(Company\\@1),避免JOLT将其解析为特殊符号
  • [#2]用于保留原数组的索引位置,确保每个对象对应到输出数组的正确位置
  • "*": "[#2].&"保留所有未指定重命名的键,&表示沿用原键名

内容的提问来源于stack exchange,提问作者Sumit Manna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:25:19