当有嵌套数组和没有嵌套数组时压平json

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

处理数组中单个元素或多个元素时的动态震动

如果我们在 PartnerFunction 嵌套数组中收到一个数组,我的 jolt 规范工作得很好,但如果他们发送的 JSON 只涉及 PartnerFunction 中的一个元素,则它会失败

输入1

{
  "CustomerMaster": {
    "Rootnode": {
      "KUNNR": "123",
      "NAME1": "XXXX",
      "LAND1": "SE",
      "SalesArea": {
        "VKORG": "1301",
        "VTWEG": "10",
        "SPART": "00",
        "AUFSD": "",
        "FAKSD": "",
        "LIFSD": "",
        "PartnerFunction": [
          {
            "PARVW": "RE",
            "PARZA": "000",
            "KUNN2": "1231"
          },
          {
            "PARVW": "RE",
            "PARZA": "000",
            "KUNN2": "1232"
          }
        ]
      }
    }
  }

输入2

{
  "CustomerMaster": {
    "Rootnode": {
      "KUNNR": "123",
      "NAME1": "XXXX",
      "LAND1": "SE",
      "SalesArea": {
        "VKORG": "1301",
        "VTWEG": "10",
        "SPART": "00",
        "AUFSD": "",
        "FAKSD": "",
        "LIFSD": "",
        "PartnerFunction": {
          "PARVW": "RE",
          "PARZA": "000",
          "KUNN2": "1231"
        }
      }
    }
  }
}

我正在使用 Jolt Spec

[
  {
    "operation": "shift",
    "spec": {
      "CustomerMaster": {
        "Rootnode": {
          "SalesArea": {
            "PartnerFunction": {
              "*": {
                "@(3,KUNNR)": "[&1].KUNNR",
                "@(3,NAME1)": "[&1].NAME1",
                "@(3,NAME2)": "[&1].NAME2",
                "@(3,NAME3)": "[&1].NAME3",
                "@(3,NAME4)": "[&1].NAME4",
                "@(3,LAND1)": "[&1].LAND1",
                "@(2,VKORG)": "[&1].VKORG",
                "@(2,VTWEG)": "[&1].VTWEG",
                "@(2,SPART)": "[&1].SPART",
                "PARVW": "[&1].PARVW",
                "PARZA": "[&1].PARZA",
                "KUNN2": "[&1].KUNN2"
              }
            }
          }
        }
      }
    }
    }
]

非常感谢任何帮助

json apache-nifi jolt
1个回答
0
投票

modify
转换中添加 toList 函数作为第一个规范将解决以下问题:

[ { "operation": "modify-overwrite-beta", "spec": { "CustomerMaster": { "Rootnode": { "SalesArea": { "PartnerFunction": "=toList" } } } } }, { "operation": "shift", "spec": { "CustomerMaster": { "Rootnode": { "SalesArea": { "PartnerFunction": { "*": { "@(3,KUNNR)": "[&1].KUNNR", "@(3,NAME1)": "[&1].NAME1", "@(3,NAME2)": "[&1].NAME2", "@(3,NAME3)": "[&1].NAME3", "@(3,NAME4)": "[&1].NAME4", "@(3,LAND1)": "[&1].LAND1", "@(2,VKORG)": "[&1].VKORG", "@(2,VTWEG)": "[&1].VTWEG", "@(2,SPART)": "[&1].SPART", "PARVW": "[&1].PARVW", "PARZA": "[&1].PARZA", "KUNN2": "[&1].KUNN2" } } } } } } } ]
    
© www.soinside.com 2019 - 2024. All rights reserved.