【问题标题】:Json array transformation with Jolt使用 Jolt 进行 Json 数组转换
【发布时间】:2019-02-07 12:22:57
【问题描述】:

我正在尝试使用 Jolt 从 JSON 数组转换为另一个数组。 它由一个没有键的嵌套 JSON 数组组成。

这是我的输入:

[
  [
    "20190207101456",
    1,
    2,
    3
  ],
  [
    "20190207101456",
    4,
    5,
    6
  ]
]

我想得到以下输出:

[
 {
  "timestamp": "20190207101456",
  "value1": 1,
  "value2" : 2,
  "value3" : 3
 },
 {
  "timestamp": "20190207101456",
  "value1": 4,
  "value2" : 5,
  "value3" : 6
 }
]

我能够使用这个规范文件为单个嵌套数组元素添加键:

[
  {
    "operation": "shift",
    "spec": {
      "0": "timestamp",
      "1": "value1",
      "2": "value2",
      "3": "value3"
    }
  }
]

但我不知道如何将其应用于外部 JSON 数组。

【问题讨论】:

    标签: json jolt


    【解决方案1】:

    这样的事情应该做你想做的事:

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "0": "[&1].timestamp",
            "1": "[&1].value1",
            "2": "[&1].value2",
            "3": "[&1].value3"
          }
        }
      }
    ]
    

    在对默认空数组进行注释后,您可以这样做:

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "0": "[&1].timestamp",
            "1": "[&1].value1",
            "2": "[&1].value2",
            "3": "[&1].value3"
          }
        }
      },
      {
        "operation": "default",
        "spec": {
          "*": {
            "TRASH": "",
            "value_before_timestamp": "static_value"
          }
        }
      },
      {
        "operation": "remove",
        "spec": {
          "*": {
            "TRASH": ""
          }
        }
      }
    ]
    

    TRASH 诡计取自here

    【讨论】:

    • 谢谢!但是,如果我将其应用于空列表[],则输出为null。是否有可能得到一个空列表而不是null
    • 再次感谢!最后一件事,如何在开始时为每条记录添加一个静态键/值对? "value_before_timestamp" : "static_value"
    • 使用操作默认,见上。
    猜你喜欢
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多