JOLT - 重新排序嵌套数组

JOLT - Reorder nested arrays

我正在尝试使用 JOLT 对嵌套数组重新排序。我的目标是将位于同一数组位置 (i) 的所有元素分组并将它们添加到另一个数组。

输入:

{
  "values": [
    [
      "84139",
      "123"
    ],
    [
      "230",
      "456"
    ],
    [
      "230475",
      "789"
    ]
  ]
}

想要的结果:

{
  "result": [ // same length as values[i]
    [ // same length as values
      "84139",
      "230",
      "230475"
    ],
    [
      "123",
      "456"
      "789"
    ]
  ]
}

INFO:请记住两个数组(根和子)的长度是可变的,因此解决方案必须是通用的。

附加输入:

{
  "values": [
    [
      "84139",
      "123",
      "000"
    ],
    [
      "230",
      "456",
      "000"
    ]
  ]
}

附加输出:

{
  "result": [
    [
      "84139",
      "230"
    ],
    [
      "123",
      "456"
    ],
    [
      "000",
      "000"
    ]
  ]
}

设法得到你想要的。

[
  {
    "operation": "shift",
    "spec": {
      "values": {
        "*": {
          "*": "result.[&0]"
        }
      }
    }
  }
]

这里的秘诀是使用&0将值的“叶节点”与它们在各自数组中占据的索引进行匹配,在本例中,它表示每个叶节点的数组索引。

请注意,此解决方案仅在 values 的所有子项具有相同数量的子项时才有效。