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

如何在Jolt转换中将JSON值中的点运算符转为嵌套JSON对象?

Jolt转换:将带点的属性名转为嵌套JSON对象

要把target_property中类似comment.body的字符串转成嵌套的JSON结构,你需要在原规则基础上新增拆分属性名的步骤,具体Jolt规则如下:

[
  // 拆分target_property为数组,存临时字段
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "field_list": {
        "*": {
          "target_parts": "=split('\\.', @(1,target_property))"
        }
      }
    }
  },
  // 构建嵌套路径并整合字段
  {
    "operation": "shift",
    "spec": {
      "form_id": "ticket.ticket_form_id",
      "name": "ticket.requester.name",
      "email": "ticket.requester.email",
      "field_list": {
        "*": {
          "is_custom_field": {
            "true": {
              "@(2,target_property)": "ticket.custom_fields[&3].id",
              "@(2,value)": "ticket.custom_fields[&3].value"
            },
            "*": {
              "@(2,value)": "ticket.@(3,target_parts[0]).@(3,target_parts[1])"
            }
          }
        }
      }
    }
  }
]

规则说明:

  1. 拆分步骤:用modify-overwrite-beta结合split函数,把每个target_property按.拆分成数组(比如comment.body变成["comment", "body"]),存到临时字段target_parts。
  2. 构建嵌套:在shift操作中,通过@(3,target_parts[0])和@(3,target_parts[1])分别引用拆分后的数组元素,将值映射到嵌套的ticket.comment.body路径下。
  3. 原规则中自定义字段的逻辑保持不变,非自定义字段的路径由拆分后的数组动态生成。

输入示例:

{
  "name": "Test",
  "email": "Test",
  "form_id": "123",
  "field_list": [
    {
      "id": 1,
      "value": "Test Subject",
      "is_custom_field": false,
      "target_property": "subject"
    },
    {
      "id": 2,
      "value": "Test Description",
      "is_custom_field": false,
      "target_property": "comment.body"
    }
  ]
}

输出结果:

{
  "ticket": {
    "ticket_form_id": "123",
    "requester": {
      "name": "Test",
      "email": "Test"
    },
    "subject": "Test Subject",
    "comment": {
      "body": "Test Description"
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:21:23