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

如何在Jolt转换中生成同一JSON内的两个独立数组?

Jolt转换:生成两个独立数组的修正方案

问题背景

输入JSON包含listOfActivities和嵌套的InvoiceItemsDetail数组,期望将它们分别转换为字段名大写的listOfActivities数组,以及InvoiceLineItems数组,最终包裹在body节点下,同时将InvoiceItemLineNumber转为字符串类型。原Jolt规范未能生成预期结构,核心问题出在数组遍历逻辑和节点路径定位上。

修正后的Jolt转换规范

[
  {
    "operation": "shift",
    "spec": {
      "MainObj": {
        "SubObj": {
          "age": "body.age",
          "Address": "body.Address",
          "listOfActivities": {
            "*": {
              "ActivityId": "body.listOfActivities[&1].ACTIVITY_ID",
              "ActivityName": "body.listOfActivities[&1].ACTIVITY_NAME"
            }
          }
        },
        "ShoppingDetails": {
          "Invoices": {
            "*": {
              "InvoiceItemsDetail": {
                "*": {
                  "InvoiceItemLineNumber": "body.InvoiceLineItems[&1].INVOICE_ITEM_NO",
                  "CustomerCode": "body.InvoiceLineItems[&1].CUSTOMER_CODE",
                  "Description": "body.InvoiceLineItems[&1].DESCRIPTION"
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "body": {
        "InvoiceLineItems": {
          "*": {
            "INVOICE_ITEM_NO": "=toString"
          }
        }
      }
    }
  }
]

关键修正点

  • 数组遍历逻辑修复:给listOfActivities添加"*": {}遍历器,用[&1]保留数组索引,确保生成完整的数组结构,而非零散的字段
  • 节点路径修正:补上遗漏的ShoppingDetails层级,将Invoices的定位路径从MainObj.Invoices调整为MainObj.ShoppingDetails.Invoices,匹配输入JSON的实际结构
  • 类型转换精准化:在modify-overwrite-beta中精准定位body.InvoiceLineItems[*].INVOICE_ITEM_NO,避免误处理其他无关字段

验证输出

修正后的规范会生成符合预期的JSON结构:

{
  "body": {
    "age": 30,
    "Address": "Address",
    "listOfActivities": [
      {
        "ACTIVITY_ID": 1,
        "ACTIVITY_NAME": "Activity 1"
      },
      {
        "ACTIVITY_ID": 2,
        "ACTIVITY_NAME": "Activity 2"
      }
    ],
    "InvoiceLineItems": [
      {
        "INVOICE_ITEM_NO": "1",
        "CUSTOMER_CODE": "1234",
        "DESCRIPTION": "Description1"
      },
      {
        "INVOICE_ITEM_NO": "2",
        "CUSTOMER_CODE": "5678",
        "DESCRIPTION": "Description2"
      }
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:03:28