如何将 JOLT return 键值作为列表,即使它具有单值或多值?

How to make JOLT return key value as a list even it has a single value or multi-value?

我想将 JSON 格式转换为另一种格式,因此我使用了 jolt。如果 jolt 有最好的,请推荐我。

当我映射这个对象时

{
  "id": 1,
  "username": "sd4s5d4",
  "phone": "111",
  "groups": [
    {
      "id": 1
    },
    {
      "id": 2
    }
  ]
}

预期输出正常,组的值作为列表返回

{
 "id": 1,
 "username": "sd4s5d4",
 "phone": "111",
 "groups": [ 1, 2 ]
}

但是当我映射这个对象时

{
  "id": 5,
  "username": "sd4s5d4",
  "phone": "111",
  "groups": [
    {
      "id": 1
    }
  ]
}

它returns

{
  "id": 5,
  "username": "sd4s5d4",
  "phone": "111",
  "groups": 1 
}

如何使最后输出中的组成为列表,即使它是一个项目。 想要的格式

{
  "id": 5,
  "username": "sd4s5d4",
  "phone": "111",
  "groups": [1]
}

规格

[
  {
    "operation": "shift",
    "spec": {
      "id": "id",
      "username": "username",
      "phone": "phone",
      "groups": {
        "*": {
          "id": "groups"
        }
      }
    }
  }
]

只需将 "id": "groups" 替换为 "id": "groups.[&1]" 就足够了,顺便说一句,无需单独重复每个元素,只需使用与符号运算符替换为适当的替换,并在表示级别的整数值前面加上提供给目标密钥(} 运算符的 e.g.number,同时到达相关密钥)。因此,将 "id": "groups.[&1]" 转换为 "id": "&2.[&1]",并将 "*": "&", 用于其他元素,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "groups": {
        "*": {
          "id": "&2.[&1]"
        }
      }
    }
  }
]