颠簸 - 在同一级别添加时合并值的问题

Jolt - issue with combined values when added at same level

我刚开始使用 jolt

当前面临合并地图数组的问题。

我有一个映射数组,每个映射中的 1 个键都有一个字符串数组 - 如输入 JSON 所示。

我正在尝试将所有 key/values 组合成一个地图数组 - 如预期输出所示

组合时,值会合并而不是单独添加。

感谢任何帮助。

输入JSON

 {
  "items": [
    {
      "frontItem": [
        "frontItem1"
      ],
      "base": "base1"
    },
    {
      "frontItem": [
        "frontItem2",
        "frontItem3"
      ],
      "base": "base2"
    }
  ]
}

Jolt 规范已创建

[
  {
    "operation": "shift",
    "spec": {
      "items": {
        "*": {
          "frontItem": {
            "*": {
              "@": "modified-items.[&].frontItem",
              "@(2,base)": "modified-items.[&].base"
            }
          }
        }
      }
    }
  }
]

预期输出

{
  "modified-items": [
    {
      "frontItem": "frontItem1",
      "base": "base1"
    },
    {
      "frontItem": "frontItem2",
      "base": "base2"
    },
    {
      "frontItem": "frontItem3",
      "base": "base2"
    }
  ]
}

创建规范后的当前输出

{
  "modified-items": [
    {
      "frontItem": [
        "frontItem1",
        "frontItem2"
      ],
      "base": [
        "base1",
        "base2"
      ]
    },
    {
      "frontItem": "frontItem3",
      "base": "base2"
    }
  ]
}

您离找到解决方案很近了。在遍历 frontItem 列表的索引时,只需将值分隔 @(3,base) 例如

[
  {
    "operation": "shift",
    "spec": {
      "items": {
        "*": {
          "frontItem": {
            "*": {
              "@": "@(3,base).[&].frontItem",
              "@(2,base)": "@(3,base).[&].base"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": ""
      }
    }
  }
]

网站上的演示http://jolt-demo.appspot.com/