颠簸转化深嵌套的数组

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

我需要使用JOLT改造一个JSON。我摇晃转化的新手。以下是详细内容。我们正试图利用NiFi颠簸变换,从而jsons。

这里是输入

   {
  "Parent": {
    "Child": {
      "GrandChild": [
        {
          "DeepDown": [
            {
              "Field2": "2019-01-29T11:32:45",
              "Field1": "015",
              "Field3": "data2"
            }
          ]
        },
        {
          "DeepDown": [
            {
              "Field2": "2019-01-30T11:32:45",
              "Field1": "016",
              "Field3": "data1"
            }
          ]
        }
      ]
    }
  }
}

这是我写的JOLT(更新感谢HariKrishna!)

    [
  {
    "operation": "shift",
    "spec": {
      "Parent": {
        "Child": {
          "GrandChild": {
            "*": {
              "DeepDown": {
                "*": {
                  "Field1": "Root.RepeatThis.[].Element1",
                  "Field2": "Root.RepeatThis.[].Element2",
                  "Field3": "Root.RepeatThis.[].Element3"
                }
              }
            }
          }
        }
      }
    }
  }
]

我期待下面的输出。

{
  "Root" : {
    "RepeatThis" : [ {
      "Element1" : "015",
      "Element2" : "2019-01-29T11:32:45",
      "Element3" : "data2"
    },  {
      "Element1" : "016",
      "Element2" : "2019-01-30T11:32:45",
      "Element3" : "data1"
    } ]
  }
}

我无法获得循环工作。这是我从我写的JOLT得到输出。

{
  "Root" : {
    "RepeatThis" : [ {
      "Element1" : "015"
    }, {
      "Element2" : "2019-01-29T11:32:45"
    }, {
      "Element3" : "data2"
    }, {
      "Element1" : "016"
    }, {
      "Element2" : "2019-01-30T11:32:45"
    }, {
      "Element3" : "data1"
    } ]
  }
}
json jolt
2个回答
0
投票

尝试使用这个规范JOLT

[
  {
    "operation": "shift",
    "spec": {
      "Parent": {
        "Child": {
          "GrandChild": {
            "*": {
              "DeepDown": {
                "*": {
                  "Field2": "Root.RepeatThis.[].Element2"
                }
              }
            }
          }
        }
      }
    }
  }
]

0
投票

应该产生所期望的输出以下,[&3]将使用来自如GrandChild阵列位置(上升从当前上下文3级),因此正确地将它们分组:

[
  {
    "operation": "shift",
    "spec": {
      "Parent": {
        "Child": {
          "GrandChild": {
            "*": {
              "DeepDown": {
                "*": {
                  "Field1": "Root.RepeatThis.[&3].Element1",
                  "Field2": "Root.RepeatThis.[&3].Element2",
                  "Field3": "Root.RepeatThis.[&3].Element3"
                }
              }
            }
          }
        }
      }
    }
  }
]

© www.soinside.com 2019 - 2024. All rights reserved.