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

JOLT转换求助:嵌套字段平展与对象转字符串问题

JOLT转换修正方案

问题说明

我是JOLT转换新手,需要将指定输入JSON转换为预期输出,尝试了现有转换规范但结果不符合要求,请求协助修正。

输入JSON

[
  {
    "product_id": 1,
    "product_description": "Product 1 details",
    "billing_details": {
      "product_id": 1,
      "billing_description": "Product 1 billing  Details"
    },
    "product_part_desc": {
      "id": 1,
      "part_description": "product 1 part description"
    }
  },
  {
    "product_id": 2,
    "product_description": "Product 2 details",
    "billing_details": {
      "product_id": 1,
      "billing_description": "Product 2 billing  Details"
    },
    "product_part_desc": {
      "id": 1,
      "part_description": "product 2 part description"
    }
  }
]

原尝试转换规范

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "product_id": "[&1].id",
        "product_description": "[&1].description",
        "billing_details": {
          "billing_description": "[&2].bill_desc"
        },
        "*": "&"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "product_part_desc": "=toString(@(1,product_part_desc))"
      }
    }
  }
]

预期输出

[
  {
    "id": 1,
    "product_description": "Product 1 details",
    "billing_description": "Product 1 billing  Details",
    "product_part_desc": "{id=1, part_description=product 1 part description}"
  },
  {
    "product_id": 2,
    "product_description": "Product 2 details",
    "billing_description": "Product 2 billing  Details",
    "product_part_desc": "{id=1, part_description=product 2 part description}"
  }
]

修正后的转换规范

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        // 根据product_id与billing_details.product_id是否匹配,动态设置字段名
        "product_id": {
          "@(2,billing_details.product_id)": "[&3].id",
          "*": "[&3].product_id"
        },
        "product_description": "[&1].product_description",
        "billing_details": {
          "billing_description": "[&2].billing_description"
        },
        "product_part_desc": "[&1].product_part_desc"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "product_part_desc": "=toString(@(1,product_part_desc))"
      }
    }
  }
]

修正说明

  1. 字段名映射修正:
    • 原规范错误将product_description映射为description,现在改为保留原字段名;
    • 原规范将billing_description映射为bill_desc,现在改为保留原字段名;
  2. 动态字段名处理:
    通过JOLT条件匹配逻辑,当product_id与billing_details.product_id值相等时,将字段重命名为id,否则保留原字段名product_id,匹配预期输出的差异化字段要求;
  3. 明确保留目标字段:
    直接指定保留product_part_desc字段,避免通配符带来的不确定性;
  4. 保留字符串转换逻辑:
    保留原有的对象转字符串操作,确保product_part_desc格式符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:55:19