JOLT - 条件动态默认值

JOLT - Conditional dynamic default values

我需要一种将数据从一个数组直接转移到另一个数组的转换。我的主要问题是输入 dependant 数组有时可能为空。对于这些情况,有一个 master 数组定义了 result 数组的长度。

总而言之,我需要:

举几个例子:

案例 1(正常移动数据)

输入:

{
  "master": [
    {
      "a": "a1",
      "b": "b1"
    },
    {
      "a": "a2",
      "b": "b2"
    }
  ],
  "dependant": [
    {
      "data": "AA"
    },
    {
      "data": "BB"
    }
  ]
}

期望的输出:

{
  "result": [ "AA", "BB" ]
}

案例 2

dependant 数组为空,我们需要创建与 master 长度相同的 result 数组。每个元素可以是任何字符串,例如 DEFAULT.

输入:

{
  "master": [
    {
      "a": "a1",
      "b": "b1"
    },
    {
      "a": "a2",
      "b": "b2"
    }
  ],
  "dependant": []
}

输出:

{
  "result": [ "DEFAULT", "DEFAULT" ]
}

您可以连续应用 modify-overwrite-betashift 转换,例如

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "szdependant": "=size(@(1,dependant))"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "szdependant": {
        "0": {
          "@(2,master)": { "*": { "#DEFAULT": "result" } }
        },
        "*": {
          "@(2,dependant)": { "*": { "*": "result" } }
        }
      }
    }
  }
]

为了使用 dependant 列表的大小值 (szdependant) 作为 shift 转换步骤中的条件语句