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

求可实现嵌套JSON扁平化的正确Jolt Spec(修复单元素生效问题)

Jolt嵌套JSON扁平化转换解决方案

输入JSON

{"values":[{"reference_id":"TEST_51_ST","idoc_number":"0000000113916030","sto_number":"","sending_location":"0000000625","receiving_location":"4955","idoc_status":"51","create_time":"07:19:34","create_date":"2023-07-20","values1":[{"material_number":"A17265420","status":"E","message_class":"06","message_num":"215","message_text":"Please enter net price"},{"material_number":"","status":"E","message_class":"BAPI","message_num":"001","message_text":"No instance of object type PurchaseOrder has been created. External reference:"}]},{"reference_id":"TEST_51_ST123","idoc_number":"0000000113916030312","sto_number":"","sending_location":"00000006253","receiving_location":"49553","idoc_status":"513","create_time":"07:19:34","create_date":"2023-07-20","values1":[{"material_number":"A172654203","status":"E","message_class":"06","message_num":"2153","message_text":"Please enter net price"},{"material_number":"","status":"E","message_class":"BAPI","message_num":"0031","message_text":"No instance of object type PurchaseOrder has been created. External reference:"}]}]}

期望输出

[{"reference_id":"TEST_51_ST","idoc_number":"0000000113916030","sto_number":"","sending_location":"0000000625","receiving_location":"4955","idoc_status":"51","create_time":"07:19:34","create_date":"2023-07-20","material_number":"A17265420","status":"E","message_class":"06","message_num":"215","message_text":"Please enter net price"},{"reference_id":"TEST_51_ST","idoc_number":"0000000113916030","sto_number":"","sending_location":"0000000625","receiving_location":"4955","idoc_status":"51","create_time":"07:19:34","create_date":"2023-07-20","material_number":"","status":"E","message_class":"BAPI","message_num":"001","message_text":"No instance of object type PurchaseOrder has been created. External reference:"},{"reference_id":"TEST_51_ST123","idoc_number":"0000000113916030312","sto_number":"","sending_location":"00000006253","receiving_location":"49553","idoc_status":"513","create_time":"07:19:34","create_date":"2023-07-20","material_number":"A172654203","status":"E","message_class":"06","message_num":"2153","message_text":"Please enter net price"},{"reference_id":"TEST_51_ST123","idoc_number":"0000000113916030312","sto_number":"","sending_location":"00000006253","receiving_location":"49553","idoc_status":"513","create_time":"07:19:34","create_date":"2023-07-20","material_number":"","status":"E","message_class":"BAPI","message_num":"0031","message_text":"No instance of object type PurchaseOrder has been created. External reference:"}]

问题说明

之前尝试的Jolt Spec仅能处理单个数组元素,无法正确生成多元素场景下的扁平列表,原Spec如下:

[{"operation":"shift","spec":{"values":{"*":{"values1":{"*":{"@(2,reference_id)":["&1"].reference_id","@(2,idoc_number)":["&1"].idoc_number","@(2,sto_number)":["&1"].sto_number","@(2,sending_location)":["&1"].sending_location","@(2,receiving_location)":["&1"].receiving_location","@(2,idoc_status)":["&1"].idoc_status","@(2,create_time)":["&1"].create_time","@(2,create_date)":["&1"].create_date","material_number":["&1"].material_number","status":["&1"].status","message_class":["&1"].message_class","message_num":["&1"].message_num","message_text":["&1"].message_text}}}}}}]

正确的Jolt Spec

[
  {
    "operation": "shift",
    "spec": {
      "values": {
        "*": {
          "values1": {
            "*": {
              "@(3,reference_id)": "[&2].reference_id",
              "@(3,idoc_number)": "[&2].idoc_number",
              "@(3,sto_number)": "[&2].sto_number",
              "@(3,sending_location)": "[&2].sending_location",
              "@(3,receiving_location)": "[&2].receiving_location",
              "@(3,idoc_status)": "[&2].idoc_status",
              "@(3,create_time)": "[&2].create_time",
              "@(3,create_date)": "[&2].create_date",
              "material_number": "[&2].material_number",
              "status": "[&2].status",
              "message_class": "[&2].message_class",
              "message_num": "[&2].message_num",
              "message_text": "[&2].message_text"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]

关键说明

  • @(3,field):向上三层引用父级values数组元素中的对应字段,确保每个values1元素都能关联到正确的父级数据
  • [&2]:生成唯一的条目键,其中&2表示结合values数组的索引和values1数组的索引,避免条目冲突
  • 第二个shift操作:将分组的对象展开为一个无嵌套的扁平数组,完全匹配期望输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:59:55