忽略输出中的隐式数组创建 JSON

Ignoring implicit Array creation in the output JSON

所以目前如果输入是

{
  "foo": "bar",
  "tuna": "marlin"
}

规格是

[
  {
    "operation": "shift",
    "spec": {
      "foo": "baz",
      "tuna": "baz"
    }
  }
]

输出为

{
  "baz" : [ "bar", "marlin" ]
}

如何让 jolt 不创建数组,而是用数组的最后一个元素覆盖“baz”键的值?

预期产出

{
  "baz" : "marlin"
}

据我了解,您只想获取数组的最后一个元素。因此,为您的操作类型 modify-overwrite-beta 添加一个规范以及 lastElement() 函数,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": "baz"
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=lastElement(@(1,&))"
    }
  }
]

其中无需在 shift 规范中明确写入每个键,而是用星号替换它们。然后,第二个规范中的星号也代表所有键(在这种情况下,这只是 baz),旁边的&符号复制键的名称以表示相对值。