Jolt 变换 - 字段相等的过滤器数组

Jolt Transform - Filter Array Where Fields equal

在 Jolt 转换中,我试图通过一个 id 过滤一个对象数组,如果该 id 等于数组外部字段上的一个 Id。

这是我的数据

{
  "position": {
    "positionManagerId": "123"
  },
  "managers": [
    {
      "id": "123",
      "name": "John"
    },
    {
      "id": "456",
      "name": "Jack"
    }
  ]
}

我喜欢抢经理在哪 managers.id == position.positonManagerId

我的输出看起来像

{
  "managerId": "123",
  "managerName": "John"
}

您可以应用两次移位变换。

将公共 id 值下的 key-value 对组合为第一个中的键名,以便获得搜索到的 id 值的列表(在本例中为 123),而另一对( s) 不会是列表。

然后在第二个规范中使用索引值(01)以消除没有列表值的对,例如

[
  {
    "operation": "shift",
    "spec": {
      "position": {
        "*": {
          "$": "@(0)"
        }
      },
      "managers": {
        "*": {
          "@name": "@id"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "0": {
          "": "managerId"
        },
        "1": "managerName"
      }
    }
  }
]