用Jolt进行Json数组转换

时间:2019-02-07 12:22:58

标签: json jolt

我正在尝试使用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
 }
]

我能够使用这个spec文件为单个嵌套数组元素添加密钥:

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

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

1 个答案:

答案 0 :(得分: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