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

如何修改Jolt规则将数组转为可解析的JSON字符串?

问题:修改Jolt规范将数组转为可解析的JSON字符串

原始输入JSON

{
  "barcode": "7490b0d2-dfe5-4a21-bc21-02de587e2fe8",
  "containers": [
    {
      "L_ID": "867bb595-d2a4-4424-a3c3-c96cf9f4d5ee",
      "barcode": "e75d1dc6-73c7-43ea-a805-27d27839f226"
    },
    {
      "L_ID": "737dd78f-4657-4be3-a989-c647a6f3c9b6",
      "barcode": "42e918a2-6417-4e4b-9975-c5332fba2b86"
    }
  ]
}

原Jolt转换规范

[
  {
    "operation": "shift",
    "spec": {
      "barcode": "barcode",
      "containers": "&"
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "containers": "=concat('',@(1,containers))"
    }
  }
]

当前转换结果

{
   "barcode" : "7490b0d2-dfe5-4a21-bc21-02de587e2fe8",
   "containers" : "[{L_ID=867bb595-d2a4-4424-a3c3-c96cf9f4d5ee, barcode=e75d1dc6-73c7-43ea-a805-27d27839f226}, {L_ID=737dd78f-4657-4be3-a989-c647a6f3c9b6, barcode=42e918a2-6417-4e4b-9975-c5332fba2b86}]"
}

此结果中containers字段的字符串并非标准JSON格式:键名和字符串值没有引号,键值间用=而非:,无法被JSON解析器正常解析。

期望结果(标准JSON兼容版本)

{
   "barcode" : "7490b0d2-dfe5-4a21-bc21-02de587e2fe8",
   "containers" : "[{\"L_ID\":\"867bb595-d2a4-4424-a3c3-c96cf9f4d5ee\", \"barcode\":\"e75d1dc6-73c7-43ea-a805-27d27839f226\"}, {\"L_ID\":\"737dd78f-4657-4be3-a989-c647a6f3c9b6\", \"barcode\":\"42e918a2-6417-4e4b-9975-c5332fba2b86\"}]"
}

注:JSON标准要求字符串内部双引号需转义为\",此版本比你给出的单引号版本兼容性更强,可被所有标准JSON解析器正确解析。

修改后的Jolt规范

[
  {
    "operation": "shift",
    "spec": {
      "barcode": "barcode",
      "containers": "&"
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "containers": "=toJson(@(1,containers))"
    }
  }
]

说明

原Jolt中concat('',@(1,containers))只是将Java对象转为默认的字符串表示(类似toString()输出),并非标准JSON格式。替换为=toJson(@(1,containers))后,Jolt会将containers数组序列化为标准JSON字符串,自动处理引号、冒号和转义规则,生成可正常解析的结果。

内容的提问来源于stack exchange,提问作者adnan hajar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:37:07