JOLT 转换将相同的元素添加到所有数组中

JOLT transformation add the same elements into all arrays

我想为数组的每个元素添加相同的值。 我的方法是使用 default 来添加值。 它与 有点不同,因为: 我不知道如何写入数组的现有元素而不是新元素。

输入:

{
  "counterTop": {
    "loaf1": [
      {
        "type": "white",
        "unit": "mm",
        "test": "correct"
      },
      {
        "type": "black",
        "unit": "cm",
        "test": "false"
      }
    ]
  }
}

规格:

[
  {
    "operation": "default",
    "spec": {
      "counterTop": {
        "loaf1": {
          "*": {
            "slices": ""
          }
        }
      }
    }
  }
]

预期输出:

{
  "counterTop": {
    "loaf1": [
      {
        "type": "white",
        "unit": "mm",
        "test": "correct",
        "slices": ""
      },
      {
        "type": "black",
        "unit": "cm",
        "test": "false",
        "slices": ""
      }
    ]
  }
}

当前输出

{
  "counterTop": {
    "loaf1": [
      {
        "type": "white",
        "unit": "mm",
        "test": "correct"
      },
      {
        "type": "black",
        "unit": "cm",
        "test": "false"
      }
    ]
  }
}

这里有人有解决办法吗?在阵列外它工作没有问题,但我无法进入那里。

提前致谢!

一个选项是两次应用移位变换;为了通过在第一步中添加新的键值对("slices":" ")的同时进入最内层来提取列表(loaf1)的键值对,然后将所有列表组合回原始在第二个中,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "*": "&",
            "# ": "slices"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "counterTop.loaf1[&].&1"
      }
    }
  }
]