【问题标题】:Jolt - How to convert two arrays to key value and keep other singles propertiesJolt - 如何将两个数组转换为键值并保留其他单打属性
【发布时间】:2021-08-29 07:10:46
【问题描述】:

我有一个 JSON,其中包含两个需要转换为键/值对的数组。数组上的这些键是动态的,可以更改。

为此,我正在尝试创建一个 Jolt 规范以将我的输入数据转换为以下格式。

JSON 输入:

{
  "data": [
    {
      "property1": "AA",
      "property2": "BB",
      "keys": [
        "key1",
        "key2",
        "key3"
      ],
      "values": [
        "value1",
        "value2",
        "value3"
      ]
    },
    {
      "property1": "CC",
      "property2": "DD",
      "keys": [
        "key4",
        "key5"
      ],
      "values": [
        "value4",
        "value5"
      ]
    }
  ]
}

期望的输出:

[
  {
    "property1": "AA",
    "property2": "BB",
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
  },
  {
    "property1": "CC",
    "property2": "DD",
    "key4": "value4",
    "key5": "value5"
  }
]

我的规格:

[
  {
    "operation": "shift",
    "spec": {
      "data": {
        "*": {
          "values": {
            "*": {
              "@": "[&3].@(3,keys[&1])"
            }
          }
        }
      }
    }
 }
]

我的规范输出:

[
  {
    "key1": "value1",
    "key2": "value2",
    "key3": "value3"
  },
  {
    "key4": "value4",
    "key5": "value5"
  }
]

但我无法正确包含所需输出中的简单属性(property1 和 property2)。

提前致谢

【问题讨论】:

    标签: json jolt


    【解决方案1】:
    [
      {
        "operation": "shift",
        "spec": {
          "data": {
            "*": {
              "property1": "[&1].property1",
              "property2": "[&1].property2",
              "values": {
                "*": {
                  "@": "[&3].@(3,keys[&1])"
                }
              }
            }
          }
        }
     }
    ]
    

    确实,您将动态元素大量分组为键值对,但您只是错过了 property1 和 property2 字段到输出的位置映射。

    【讨论】:

      猜你喜欢
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 2017-09-03
      • 2016-04-17
      • 1970-01-01
      相关资源
      最近更新 更多