json 用于从数组中删除元素的Jolt规范

0x6upsns  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(163)

对于我的输入json,我需要编写一个Jolt规范,它可以从externalIds列表中删除externalId字段,以避免在列表中重复此元素。
输入:

{
  "id": "id_1",
  "targetId": "targetId42",
  "externalId": "1extid",
  "attributes": {
    "uniqueInfo": {
      "externalIds": [
        "3extid",
        "2extid",
        "4extid",
        "1extid",
        "5extid"
      ]
    }
  }
}

所需输出:

{
  "id": "id_1",
  "targetId": "targetId42",
  "externalId": "1extid",
  "attributes": {
    "uniqueInfo": {
      "externalIds": [
        "3extid",
        "2extid",
        "4extid",
        "5extid"
      ]
    }
  }
}

有人可以帮助这个查询。谢谢。

zphenhs4

zphenhs41#

您可以连续使用**"$":"@(0)"技术,以删除由于shift变换规范内externalId的重合值(1extid**)而生成的数组,从而使

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "externalId": "attributes.uniqueInfo.externalIds.@(0)", //exchange key-value pair
      "@(0,externalId)": "externalId", //multiplexing value to keep for later steps
      "attributes": {
        "uniqueInfo": {
          "externalIds": {
            "*": {
              "@(4,externalId)": "&4.&3.&2.@(0)" //exchange key-value pairs
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "attributes": {
        "uniqueInfo": {
          "externalIds": {
            "*": {
              "$": "&4.&3.&2.@(0)"//exchange key-value pairs again
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "attributes": {
        "uniqueInfo": {
          "externalIds": {
            "*": {
              "*": "&4.&3.&2[&]"
            }
          }
        }
      }
    }
  }
]

相关问题