如何从 JOLT 中的数组中获取值,并将它们放入对象值数组中

How to take values from an array in JOLT, put them into an array of object values

输入

{
  "field1": {
    "array1": [
      "a",
      "b"
    ],
    "array2": [
      "c",
      "d"
    ]
  }
}

我想要输出:

{
  "objectArray": [
    {
      "role": "to",
      "id": "a"
    },
    {
      "role": "to",
      "id": "b"
    },
    {
      "role": "to",
      "id": "c"
    },
    {
      "role": "to",
      "id": "d"
    }
  ]
}

我目前正在尝试:

[
  {
    "operation": "shift",
    "spec": {
      "field1": {
        "array1": {
          "#to": "objectArray[].role",
          "@": "objectArray[].id"
        },
        "array2": {
          "#to": "objectArray[].role",
          "@": "objectArray[].id"
        }
      }
    }
  }
]

然而,这似乎将角色和 ID 分离到它们自己单独的对象中,在第一个对象之后。

您可以使用 shift 转换规范的这两个步骤。

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": "o[].id"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": "objectArray[&1].&",
          "#to": "objectArray[&1].role"
        }
      }
    }
  }
]

你在第一步中获得了所有 ID 的数组,然后在重命名目标数组的同时在第二步中添加了任意选择的键值对