如何解决JOLT 从 LHS 移动到 RHS 并变平
我正在尝试使用 JOLT 转换以下 JSON,但很挣扎,任何帮助将不胜感激。
{
"2021-04-14T00:00:00+02:00": {
"249184": {
"SRAD": null,"T": -50.00000000000001
},"249185": {
"SRAD": 0.46133333444595337,"T": null
}
},"2021-04-14T00:15:00+02:00": {
"249184": {
"SRAD": null,"249185": {
"SRAD": 0.4593333303928375,"T": null
}
}
}
所需的输出:请注意,每个 deviceID 的时间戳以及 SRAD 和 T 值都会重复。
{
"timestamp": "2021-04-14T00:00:00+02:00","deviceID": 249184,"SRAD":null,"T":-50.00000000000001
},{
"timestamp": "2021-04-14T00:00:00+02:00","deviceID": 249185,"SRAD":0.46133333444595337,"T":null
},{
"timestamp": "2021-04-14T00:15:00+02:00","SRAD": 0.4593333303928375,"T":null
}
我尝试了很多东西,但一直在循环。
解决方法
[
// Change null as String,as jolt will not
// process null values
{
"operation": "modify-default-beta","spec": {
"*": {
"*": {
"SRAD": "null","T": "null"
}
}
}
},{
"operation": "shift","spec": {
"*": {
"*": {
"SRAD": "&4.SRAD","T": "&4.T","$0": "&4.deviceID","$1": "&4.timestamp"
}
}
}
},"spec": {
"*": {
"*": {
"*": {
"@": "&"
}
}
}
}
},"spec": {
"*": {
"0": "[&1].deviceID","1": "[&1].timestamp","2": "[&1].SRAD","3": "[&1].T"
}
}
}
]
您无法处理以 null 作为值的 JSON,因此使用 modify-default-beta 操作将 null 替换为“null”。
输入 JSON 按时间戳和设备 ID 分组,因此通过为子节点分配名称来解构 json,然后构造输出 JSON。
,这是一个支持 deviceId
对象内任意数量字段的具有 2 个班次的替代规范:
[
{
"operation": "shift","spec": {
"*": {
"*": {
"$(1)": "a[].timestamp","$": "b[].deviceId","@": "c[]"
}
}
}
},"spec": {
"a": {
"*": {
"timestamp": "[&1].timestamp","@(2,b[&])": "[&1]"
}
},"b": null,"c": {
"*": {
"*": "[&1].&"
}
}
}
}
]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。