当前位置: 首页 > 知识库问答 >
问题:

使用深度嵌套数组进行Jolt转换

尚安平
2023-03-14

我需要使用JOLT转换一个JSON。我是雷震改造的新手。以下是详细内容。我们正在尝试使用NiFi中的Jolt转换来转换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"
            }
          ]
        }
      ]
    }
  }
}

这是我写的作业(更新感谢哈里克里希纳!)

    [
  {
    "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"
    } ]
  }
}

我无法使循环工作。这是我从我写的作业中得到的输出。

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

共有2个答案

皇甫敏达
2023-03-14

以下内容应该会产生所需的输出,< code>[

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

太叔鸿
2023-03-14

尝试使用此JOLT规范

[
  {
    "operation": "shift",
    "spec": {
      "Parent": {
        "Child": {
          "GrandChild": {
            "*": {
              "DeepDown": {
                "*": {
                  "Field2": "Root.RepeatThis.[].Element2"
                }
              }
            }
          }
        }
      }
    }
  }
]
 类似资料:
  • 我正在尝试编写一个规范来使用jolt转换进行以下转换。我只对更改json中键的名称感兴趣,值应该保持不变。帮帮我。 输入Json: 预期输出:

  • 我有json,其中包括多个产品,每个产品有多个不同的细节。使用jolt,我只需要输入json中的几个字段,遵循与输入json几乎相同的结构。我成功地迭代了产品,但是当我试图迭代每个产品变体时,我没有得到想要的输出。 输入. json 这里是Spec.json 我想要的预期输出。 我现在得到的实际输出。

  • 如何使用jolt转换将平面JSON转换为嵌套JSON?我对JSON和jolt是新手。 输入: 预期输出: 编辑:我想在< code>SubFunds中添加一个新字段,但是新字段不在JSON文件中,它是计算字段,我可以按原样添加示例吗 并重命名字段:

  • 我只想扁平化嵌套JSON的属性,但仍然适用于输入数组中的所有对象 很难将这三个字段放在一个规范中(类型字段、geo字段、properties字段)。我编写了规范来单独完成每一个操作,但是当我将这些规范组合在一个对象中使用时,它会产生错误的输出--对象数组真的把它搞砸了。 期望输出:

  • 我正在进行转换,在我将输入定义为数组之前,它工作正常。我当前的(工作!)示例是:INPUT 使用此JOLT规范: 输出是: 这很完美,但是:我真正期望的输入是这样的: 我需要这样的输出: 我将在每个数组对象中接收“trainerName”,但我只需要使用一个。 你能帮我找出解决办法吗?我正在寻找几种解决方案,但找不到适合此示例的解决方案。 非常感谢提前!贝斯!

  • 我遇到了一个问题,使用颠簸转换将平面 JSON 转换为嵌套 JSON。而且我对颠簸转型很陌生。输入和输出详细信息如下。 我的输入: 预期产量