为嵌套数组编写 Jolt 规范

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

我有一个带有嵌套数组的 json,需要以特定格式获取输出,但我无法这样做。

输入Json:

"audiencerange": [
      {
        "AudienceRangePrecision": [
          "03",
          "04"
        ]
      },
      {
        "AudienceRangePrecision": [
          "03",
          "04"
        ]
      }
    ]
In my conversion, O3 maps to "From", whereas 04 maps to "To".

正确的输出应该是这样的:

 "onix_audience_range" : {
    "values" : [ {
      "AudienceRangePrecision" : "From, To"
    }, {
      "AudienceRangePrecision" : "From, To"
    } ]
  }

但是通过我的颠簸规格我得到:

 "onix_audience_range" : {
    "values" : [ {
      "AudienceRangePrecision" : "From, From"
    }, {
      "AudienceRangePrecision" : "To, To"
    } ]
  }

我的规格非常大,因此只需为 AudienceRangePrecision 添加以下内容即可。

    {
    "operation": "shift",
    "spec": {
      "AudienceRangePrecision": {
        "*": {
          "1|01": {
            "#Exact": "onix_audience_range.values[&2].AudienceRangePrecision"
          },
          "3|03": {
            "#From": "onix_audience_range.values[&2].AudienceRangePrecision"
          },
          "4|04": {
            "#To": "onix_audience_range.values[&2].AudienceRangePrecision"
          }
        }
      }
    }
  }

如何获得正确的输出?

json transform jolt
1个回答
0
投票

您可以使用以下转换:

[
  {//rename the components of the array
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "*": {
              "03": { "#From": "onix_audience_range.values[&4].&3[]" },
              "04": { "#To": "onix_audience_range.values[&4].&3[]" }
            }
          }
        }
      }
    }
  },
  {//combine the components of the array
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "*": {
          "*": {

            "*": "=join(',', @(1,&))"

          }
        }
      }
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.