json JOLT -条件动态默认值

jvlzgdj9  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(166)

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

  • 将数据从dependant移动到result
  • 如果未移动数据,则根据master数组长度指定默认值。

举几个例子:

CASE 1(正常移位数据)

输入:

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

预期输出:

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

案例二

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

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

输出:

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

2ledvvac1#

您可以连续应用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变换步骤内的条件语句

相关问题