使用Jolt转换JSON:字段重命名与数组结构重组需求
Jolt JSON转换需求及实现
输入JSON
{"MainObj": {"SubObject": {"Invoices": [{"InvoiceItemsDetail": [{"InvoiceItemLineNumber": "1","ItemCode": "122","Description": "GoodsDescription1"},{"InvoiceItemLineNumber": "2","ItemCode": "222","Description": "GoodsDescription2"}]},{"InvoiceItemsDetail": [{"InvoiceItemLineNumber": "3","ItemCode": "322","Description": "GoodsDescription3"},{"InvoiceItemLineNumber": "4","ItemCode": "422","Description": "GoodsDescription4"}]}]}}}
转换要求
- 移除所有无关对象(如
AnotherObject、SomeOtherObject这类冗余结构) - 字段重命名:
InvoiceItemLineNumber→INVOICE_LINE_ITEM_NUMBERItemCode→ITEM_CODEDescription→DESCRIPTION
- 将所有转换后的明细对象整合到
outputs数组中
期望输出JSON
{"outputs": [{"INVOICE_LINE_ITEM_NUMBER": "1","ITEM_CODE": "122","DESCRIPTION": "GoodsDescription1"},{"INVOICE_LINE_ITEM_NUMBER": "2","ITEM_CODE": "222","DESCRIPTION": "GoodsDescription2"},{"INVOICE_LINE_ITEM_NUMBER": "3","ITEM_CODE": "322","DESCRIPTION": "GoodsDescription3"},{"INVOICE_LINE_ITEM_NUMBER": "4","ITEM_CODE": "422","DESCRIPTION": "GoodsDescription4"}]}
实现的Jolt转换规范
[ { "operation": "shift", "spec": { "MainObj": { "SubObject": { "Invoices": { "*": { "InvoiceItemsDetail": { "*": { "InvoiceItemLineNumber": "outputs[&1].INVOICE_LINE_ITEM_NUMBER", "ItemCode": "outputs[&1].ITEM_CODE", "Description": "outputs[&1].DESCRIPTION" } } } } } } } } ]
转换逻辑说明
- 通过
shift操作逐层遍历输入的JSON结构:MainObj→SubObject→Invoices数组 - 遍历每个
Invoices元素下的InvoiceItemsDetail数组,将其中的明细对象逐一映射到outputs数组 - 直接完成字段重命名,把原字段的值赋值给对应的目标字段
内容的提问来源于stack exchange,提问作者user3691240
相关产品推荐
相关产品推荐

