【发布时间】:2021-03-31 15:11:40
【问题描述】:
我正在尝试通过 JQ 展平和重新转换 JSON 有效负载,但到目前为止还没有成功。我有以下有效负载,它具有动态数量的值,具体取决于stats 字段下的每个对象:
{
"stats": [
{
"devid": 3,
"key": "diskall",
"value": [
{
"0": 0.0001,
"1": 0.0001,
"2": 0.0012,
"3": 0.0005,
"4": 0.0007,
"5": 0.0013,
"6": 0.0006000000000000001,
"7": 0.0006000000000000001,
"8": 0.0006000000000000001,
"9": 0.0006000000000000001,
"10": 0.0005,
"11": 0.0005,
"12": 0.0005
}
]
},
{
"devid": 7,
"key": "diskall",
"value": [
{
"0": 0.0003,
"1": 0.0004,
"2": 0.0012,
"3": 0.0005,
"4": 0.0007,
"5": 0.0013,
"6": 0.00060001
}
]
}
]
}
我想将值数组对象键/值展平并转换为如下结果(对于每个统计对象中的每个值)。基本上取值中的键并将其放在名为 nodeId 的字段中,然后取值并将其放在名为 value 的字段中
{
"devid": 3
"key": "diskall"
"nodeId": 0
"value": 0.0001
},
{
"devid": 3
"key": "diskall"
"nodeId": 1
"value": 0.0001
},
{
"devid": 3
"key": "diskall"
"nodeId": 2
"value": 0.0012
},
{
"devid": 7
"key": "diskall"
"nodeId": 0
"value": 0.0003
}
我能够像这样使用 jq 进行展平:.stats | map(del(.value) + .value[]),但我不确定如何将值转换为它们自己的对象以及重命名键/值。
【问题讨论】: