使用JOLT根据角色分割数组

时间:2019-10-19 23:51:59

标签: json jolt

我正在尝试使用JOLT根据属性将一个数组拆分为多个数组。我已经尝试过JOLT“ Shift”规范,但无法实现。

我看过几个完成数组转换的链接,但找不到任何将数组拆分为多个数组的方法。

示例: 根据属性“ type”的值将以下数组转换为3个数组。

输入:

[
  {
    "name": "abc1",
    "address": "abcdef",
    "types": [
      "a",
      "b"
    ]
  },
  {
    "name": "abc2",
    "address": "abcdef2",
    "types": [
      "b",
      "c"
    ]
  },
  {
    "name": "abc3",
    "address": "abcdef3",
    "types": [
      "c"
    ]
  }
]

输出:

{
  "a": [
    {
      "name": "abc1",
      "address": "abcdef",
      "types": [
        "a",
        "b"
      ]
    }
  ],
  "b": [
    {
      "name": "abc1",
      "address": "abcdef",
      "types": [
        "a",
        "b"
      ]
    },
    {
      "name": "abc2",
      "address": "abcde2",
      "types": [
        "b",
        "c"
      ]
    }
  ],
  "c": [
    {
      "name": "abc2",
      "address": "abcde2",
      "types": [
        "b",
        "c"
      ]
    },
    {
      "name": "abc3",
      "address": "abcdef3",
      "types": [
        "c"
      ]
    }
  ]
}

1 个答案:

答案 0 :(得分:1)

这将产生所需的结果:

  1. 针对类型中的每个元素
  2. 使用数组(&1)的值作为键
  3. 上升3个级别并将其复制为值(@3
[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "types": {
          "*": {
            "*": {
              "@3": "&1"
            }
          }
        }
      }
    }
  }
]