Jolt 处理多层嵌套 JSON 到平面 JSON

问题描述 投票:0回答:1

输入:

{
    "HEADER": {
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "ITEM": [
            {
                "DATAB": 20231101,
                "DATBI": 20231101,
                "BASE_PRICE": "27.92 ",
                "NET_0": "13.51 ",
                "NET_1": "13.51 ",
                "NET_2": "13.51 ",
                "NET_3": "13.51 ",
                "NET_4": "13.51 ",
                "NET_5": "13.51 ",
                "TOTAL": "11.74 ",
                "MATNR": "000000000000021424",
                "VRKME": "KAR",
                "CONDITION": [
                    {
                        "STUNR": "010",
                        "ZAEHK": "001",
                        "KSCHL": "ZA01",
                        "WAERS": "GBP",
                        "KPEIN": "1000 ",
                        "KMEIN": "CS",
                        "KRECH": "C",
                        "KBETR": "27920.00 ",
                        "KWERT": "27.92 ",
                        "TIF_L3": "GROSS REVENUE"
                    },
                    {
                        "STUNR": "015",
                        "ZAEHK": "001",
                        "KSCHL": "ZX01",
                        "WAERS": "GBP",
                        "KPEIN": "1000 ",
                        "KMEIN": "CS",
                        "KRECH": "C",
                        "KBETR": "-14410.00",
                        "KWERT": -14.41,
                        "TIF_L3": "NOTIONAL PRICE ADJUSTMENT"
                    },
                    {
                        "STUNR": 520,
                        "ZAEHK": "001",
                        "KSCHL": "YY21",
                        "KPEIN": "0 ",
                        "KRECH": "A",
                        "KBETR": "-10.00",
                        "KWERT": -0.14,
                        "TIF_L3": "JOINT BUSINESS INITIATIVES"
                    },
                    {
                        "STUNR": 526,
                        "ZAEHK": "001",
                        "KSCHL": "YY27",
                        "KPEIN": "0 ",
                        "KRECH": "A",
                        "KBETR": "-110.00",
                        "KWERT": -1.49,
                        "TIF_L3": "DATA SHARING"
                    },
                    {
                        "STUNR": 583,
                        "ZAEHK": "001",
                        "KSCHL": "YY95",
                        "KPEIN": "0 ",
                        "KRECH": "A",
                        "KBETR": "-10.00",
                        "KWERT": -0.14,
                        "TIF_L3": "DAMAGED PACKAGING"
                    }
                ]
            },
            {
                "DATAB": 20231102,
                "DATBI": 20231129,
                "BASE_PRICE": "27.92 ",
                "NET_0": "13.51 ",
                "NET_1": "13.51 ",
                "NET_2": "13.51 ",
                "NET_3": "13.51 ",
                "NET_4": "13.51 ",
                "NET_5": "13.51 ",
                "TOTAL": "7.24 ",
                "MATNR": "000000000000021424",
                "VRKME": "KAR",
                "CONDITION": [
                    {
                        "STUNR": "010",
                        "ZAEHK": "001",
                        "KSCHL": "ZA01",
                        "WAERS": "GBP",
                        "KPEIN": "1000 ",
                        "KMEIN": "CS",
                        "KRECH": "C",
                        "KBETR": "27920.00 ",
                        "KWERT": "27.92 ",
                        "TIF_L3": "GROSS REVENUE"
                    },
                    {
                        "STUNR": "015",
                        "ZAEHK": "001",
                        "KSCHL": "ZX01",
                        "WAERS": "GBP",
                        "KPEIN": "1000 ",
                        "KMEIN": "CS",
                        "KRECH": "C",
                        "KBETR": "-14410.00",
                        "KWERT": -14.41,
                        "TIF_L3": "NOTIONAL PRICE ADJUSTMENT"
                    },
                    {
                        "STUNR": 520,
                        "ZAEHK": "001",
                        "KSCHL": "YY21",
                        "KPEIN": "0 ",
                        "KRECH": "A",
                        "KBETR": "-10.00",
                        "KWERT": -0.14,
                        "TIF_L3": "JOINT BUSINESS INITIATIVES"
                    },
                    {
                        "STUNR": 526,
                        "ZAEHK": "001",
                        "KSCHL": "YY27",
                        "KPEIN": "0 ",
                        "KRECH": "A",
                        "KBETR": "-110.00",
                        "KWERT": -1.49,
                        "TIF_L3": "DATA SHARING"
                    },
                    {
                        "STUNR": 546,
                        "ZAEHK": "001",
                        "KSCHL": "YY44",
                        "WAERS": "GBP",
                        "KPEIN": "1 ",
                        "KMEIN": "CS",
                        "KRECH": "C",
                        "KBETR": "-4.50",
                        "KWERT": "-4.50",
                        "TIF_L3": "PRICE-OFF"
                    },
                    {
                        "STUNR": 583,
                        "ZAEHK": "001",
                        "KSCHL": "YY95",
                        "KPEIN": "0 ",
                        "KRECH": "A",
                        "KBETR": "-10.00",
                        "KWERT": -0.14,
                        "TIF_L3": "DAMAGED PACKAGING"
                    }
                ]
            }
        ]
    }
}

预期输出:

[
    {
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231101,
        "DATBI": 20231101,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "11.74 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": "010",
        "ZAEHK": "001",
        "KSCHL": "ZA01",
        "WAERS": "GBP",
        "KPEIN": "1000 ",
        "KMEIN": "CS",
        "KRECH": "C",
        "KBETR": "27920.00 ",
        "KWERT": "27.92 ",
        "TIF_L3": "GROSS REVENUE"
    },
    {
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231101,
        "DATBI": 20231101,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "11.74 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",             
        "STUNR": "015",
        "ZAEHK": "001",
        "KSCHL": "ZX01",
        "WAERS": "GBP",
        "KPEIN": "1000 ",
        "KMEIN": "CS",
        "KRECH": "C",
        "KBETR": "-14410.00",
        "KWERT": -14.41,
        "TIF_L3": "NOTIONAL PRICE ADJUSTMENT"
    },
    {           
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231101,
        "DATBI": 20231101,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "11.74 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": 520,
        "ZAEHK": "001",
        "KSCHL": "YY21",
        "KPEIN": "0 ",
        "KRECH": "A",
        "KBETR": "-10.00",
        "KWERT": -0.14,
        "TIF_L3": "JOINT BUSINESS INITIATIVES"
    },
    {
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231101,
        "DATBI": 20231101,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "11.74 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": 526,
        "ZAEHK": "001",
        "KSCHL": "YY27",
        "KPEIN": "0 ",
        "KRECH": "A",
        "KBETR": "-110.00",
        "KWERT": -1.49,
        "TIF_L3": "DATA SHARING"
    },
    {           
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231101,
        "DATBI": 20231101,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "11.74 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": 583,
        "ZAEHK": "001",
        "KSCHL": "YY95",
        "KPEIN": "0 ",
        "KRECH": "A",
        "KBETR": "-10.00",
        "KWERT": -0.14,
        "TIF_L3": "DAMAGED PACKAGING"
    },
    {   
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231102,
        "DATBI": 20231129,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "7.24 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": "010",
        "ZAEHK": "001",
        "KSCHL": "ZA01",
        "WAERS": "GBP",
        "KPEIN": "1000 ",
        "KMEIN": "CS",
        "KRECH": "C",
        "KBETR": "27920.00 ",
        "KWERT": "27.92 ",
        "TIF_L3": "GROSS REVENUE"
    },
    {   
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231102,
        "DATBI": 20231129,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "7.24 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": "015",
        "ZAEHK": "001",
        "KSCHL": "ZX01",
        "WAERS": "GBP",
        "KPEIN": "1000 ",
        "KMEIN": "CS",
        "KRECH": "C",
        "KBETR": "-14410.00",
        "KWERT": -14.41,
        "TIF_L3": "NOTIONAL PRICE ADJUSTMENT"
    },
    {
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231102,
        "DATBI": 20231129,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "7.24 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": 520,
        "ZAEHK": "001",
        "KSCHL": "YY21",
        "KPEIN": "0 ",
        "KRECH": "A",
        "KBETR": "-10.00",
        "KWERT": -0.14,
        "TIF_L3": "JOINT BUSINESS INITIATIVES"
    },
    {       
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231102,
        "DATBI": 20231129,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "7.24 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": 526,
        "ZAEHK": "001",
        "KSCHL": "YY27",
        "KPEIN": "0 ",
        "KRECH": "A",
        "KBETR": "-110.00",
        "KWERT": -1.49,
        "TIF_L3": "DATA SHARING"
    },
    {   "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231102,
        "DATBI": 20231129,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "7.24 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": 546,
        "ZAEHK": "001",
        "KSCHL": "YY44",
        "WAERS": "GBP",
        "KPEIN": "1 ",
        "KMEIN": "CS",
        "KRECH": "C",
        "KBETR": "-4.50",
        "KWERT": "-4.50",
        "TIF_L3": "PRICE-OFF"
    },
    {       
        "VKORG": 1501,
        "VTWEG": 10,
        "KUNNR": "0006503254",
        "WAERK": "GBP",
        "DATAB": 20231102,
        "DATBI": 20231129,
        "BASE_PRICE": "27.92 ",
        "NET_0": "13.51 ",
        "NET_1": "13.51 ",
        "NET_2": "13.51 ",
        "NET_3": "13.51 ",
        "NET_4": "13.51 ",
        "NET_5": "13.51 ",
        "TOTAL": "7.24 ",
        "MATNR": "000000000000021424",
        "VRKME": "KAR",
        "STUNR": 583,
        "ZAEHK": "001",
        "KSCHL": "YY95",
        "KPEIN": "0 ",
        "KRECH": "A",
        "KBETR": "-10.00",
        "KWERT": -0.14,
        "TIF_L3": "DAMAGED PACKAGING"
    }
]

我正在尝试编写一个规范来使用摇动变换进行以下变换。我需要将平面 json 转换为嵌套 Json

我在将平面 JSON 转换为嵌套 JSON 时遇到一些问题。我已经查看了示例,但没有进一步了解上面提到的内容。我需要使用 JOLT 规范来转换 JSON 结构。我使用 https://jolt-demo.appspot.com 来测试以下内容。

arrays json jolt
1个回答
0
投票

您可以在 CONDITION 数组的属性中循环,同时形成名为

others1/2
的新对象,以便准备要在第二个规范中动态消散的嵌套属性,例如

[
  {
    "operation": "shift",
    "spec": {
      "HEADER": {
        "*": "others2.&",
        "ITEM": {
          "*": {
            "*": "&1.others1.&",
            "CONDITION": {
              "*": {
                "*": "&3.&2[&1].&"
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "CONDITION": {
          "*": {
            "@4,others2|@2,others1": { "*": "&4_&3_&1.&" }, // go four and two levels up the tree to grab the values of both of the "others" objects
            "*": "&3_&2_&1.&" //own attributes of the "CONDITION" array
          }
        }
      }
    }
  },
  {//get rid of the object keys to have array of objects
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.