json Jolt变换以在Nifi中展平数组

lmyy7pcs  于 2023-03-24  发布在  其他
关注(0)|答案(2)|浏览(157)

输入JSON如下:

{
  "a":[1,2,3,[4,5,6], [7], [8,9], 10, 11]
}

我希望输出为:

{
  "a":[1,2,3,4,5,6,7,8,9,10,11]
}

有什么可以为这个震动改造的。谢谢!

j8ag8udp

j8ag8udp1#

您可以应用连续的shift转换,首先将元素分隔为两个数组,其中一个数组包含子数组,另一个数组包含整数,即xy数组。然后将它们合并,同时删除null值,并将字符串化的元素转换回整数,例如

[
  {
    "operation": "shift",
    "spec": {
      "a": {
        "*": {
          "@": "x.[@1]",
          "*": "y.[]"
        }
      }
    }
 },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "$1": "@1"
        }
      }
    }
 },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "$": "@(0)"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "@": "a"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=toInteger"
    }
  }
]
gg58donl

gg58donl2#

如果你需要不使用内建函数的解决方案,试试这个!显然编程是我们用逻辑解决问题,而不使用包和内建函数。
注意:这个解决方案实际上是在Javascript中。我没有注意到标签。对不起

const temp = {
  a: [1, 2, 3, [4, 5, 6], [7], [8, 9], 10, 11]
};

let items = [];

temp.a.forEach((item) => {
  items = [
    ...items,
    ...(item.constructor.name === "Array" ? item : [item])
  ];
});
console.log(items);

相关问题