JOLT 转换 JSON 合并数组,但来自另一个字段的值

JOLT transform JSON merge array, but values from another fields

我需要从 primary_keys 数组中提取值并将它们连接成一个字符串。但是我在提取值时遇到了问题。

简化输入json:

{
  "primary_keys": [
    "ITEM",
    "LOC",
    "COMP_ID"
  ],
  "ITEM": "ID158",
  "LOC": 41,
  "COMP_ID": "BPF",
  "VALUE": 0.78
}

预期输出:

{
  "PK": "ID158|41|BPF",
  "ITEM": "ID158",
  "LOC": 41,
  "COMP_ID": "BPF",
  "VALUE": 0.78
}

primary_keys 数组的内容可能因流文件而异。我感谢任何意见。谢谢!

你可以使用modify-overwrite-beta转换和join函数在派生数组(PK)后通过使用 shift 转换,例如

primary_keys 数组的每个成员各自的值
[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "primary_keys": {
        "*": {
          "*": { "$": "PK.@(4,&)" }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "PK": {
        "*": {
          "$": "&2"
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "PK": "=join('|',@(1,&))"
    }
  }
]