JOLT 变换接受元素或元素数组

问题描述 投票:0回答:1

我使用的 API 返回元素数组或单个元素,请参阅 INPUT_1 和 INPUT_2。我需要一个可以处理两个输入并返回相同输出的规范,请参阅下面的示例。

这有可能吗?我的要求是不是太多了?

我有INPUT_1:

{
  "rating": [
    {
      "primary-value": 3,
      "id": 1
    },
    {
      "quality-value": 3,
      "id": 2
    }
  ]
}

规格:

[
  {
    "operation": "shift",
    "spec": {
      "rating": {
        "*": {
          "*": "out[&1].fields.&"
        }
      }
    }
  }
]

输出_1:

{
  "out" : [ {
    "fields" : {
      "primary-value" : 3,
      "id" : 1
    }
  }, {
    "fields" : {
      "quality-value" : 3,
      "id" : 2
    }
  } ]
}

如果我有: 输入_2:

{
  "rating":
    {
      "primary-value": 3,
      "id": 1
    }
}

规格_2:

[
  {
    "operation": "shift",
    "spec": {
      "rating": {
        "*": "out[0].fields.&"
      }
    }
  }
]

所需的 OUTPUT_2:

{
  "out" : [ {
    "fields" : {
      "primary-value" : 3,
      "id" : 1
    }
  } ]
}
json transform jolt
1个回答
0
投票

您可以通过在使用

shift
规范(例如 )之前在 modify 规范中应用 toList

功能来管理它
[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=toList"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "rating": {
        "*": {
          "*": "out[&1].fields.&"
        }
      }
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.