json 将索引作为ID分配给特定数组的每个元素[重复]

vs3odd8k  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(113)

此问题在此处已有答案

Add Array Index using JOLT(1个答案)
2天前关闭。
我有一个输入JSON:

{
  "a": "foo",
  "bunch": 123,
  "of": "foo",
  "other": "foo",
  "keys": 123,
  "contacts": [
    {
      "id": null,
      "a": "foo",
      "bunch": 123,
      "of": "foo",
      "other": "foo",
      "keys": 123
    },
    {
      "id": null,
      "a": "foo",
      "bunch": 123,
      "of": "foo",
      "other": "foo",
      "keys": 123
    }
  ]
}

contacts数组下,我想为id字段分配一个数组索引,这样预期的输出为:

{
  "a": "foo",
  "bunch": 123,
  "of": "foo",
  "other": "foo",
  "keys": 123,
  "contacts": [
    {
      "id": 0,
      "a": "foo",
      "bunch": 123,
      "of": "foo",
      "other": "foo",
      "keys": 123
    },
    {
      "id": 1,
      "a": "foo",
      "bunch": 123,
      "of": "foo",
      "other": "foo",
      "keys": 123
    }
  ]
}

目前为止我尝试的是:

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "contacts": {
        "*": {
          "*": "contacts[&1].&0",
          "$": "contacts[&1].id"
        }
      }
    }
  }
]

这不起作用,因为结果id是另一个数组。"id" : [ "idx", null ]

irlmq6kh

irlmq6kh1#

此**shift**规范将满足此要求。

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "contacts": {
        "*": {
          "@": "&2[&1]",
          "$": "&2[&1].id"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "contacts": {
        "*": {
          "id": "=toInteger"
        }
      }
    }
  }
]

相关问题