[英]Flatten/merge JSON into single array of objects with JQ
我正在嘗試將父 json object 中的嵌套對象數組合並到帶有jq
的單個對象數組中。 基本上我想將對象的每個value
數組合並到data
數組下方的單個values
數組中。
示例輸入:
{
"data": [
{
"id": 1,
"error": "error1",
"key": "key1",
"value": [
{
"class_name": "namespace_read",
"in_max": 148,
"in_min": 112,
"in_rate": 359750.71875
},
{
"class_name": "namespace_write",
"in_max": 184,
"in_min": 152,
"in_rate": 656.1185913085938
},
{
"class_name": "namespace_test",
"in_max": 152,
"in_min": 152,
"in_rate": 29.93098068237305
}
]
},
{
"id": 2,
"error": "error2",
"key": "key2",
"value": [
{
"class_name": "namespace_read",
"in_max": 156,
"in_min": 112,
"in_rate": 459885.03125
},
{
"class_name": "namespace_write",
"in_max": 176,
"in_min": 152,
"in_rate": 8970.888671875
},
{
"class_name": "namespace_test",
"in_max": 152,
"in_min": 152,
"in_rate": 262.3605346679688
}
]
}
]
}
所需的 Output:
{
"data": [
{
"values": [
{
"id": 1,
"error": "error1",
"key": "key1",
"class_name": "namespace_read",
"in_max": 148,
"in_min": 112,
"in_rate": 359750.71875
},
{
"id": 1,
"error": "error1",
"key": "key1",
"class_name": "namespace_write",
"in_max": 184,
"in_min": 152,
"in_rate": 656.1185913085938
},
{
"id": 1,
"error": "error1",
"key": "key1",
"class_name": "namespace_test",
"in_max": 152,
"in_min": 152,
"in_rate": 29.93098068237305
},
{
"id": 2,
"error": "error2",
"key": "key2",
"class_name": "namespace_read",
"in_max": 156,
"in_min": 112,
"in_rate": 459885.03125
},
{
"id": 2,
"error": "error2",
"key": "key2",
"class_name": "namespace_write",
"in_max": 176,
"in_min": 152,
"in_rate": 8970.888671875
},
{
"id": 2,
"error": "error2",
"key": "key2",
"class_name": "namespace_test",
"in_max": 152,
"in_min": 152,
"in_rate": 262.3605346679688
}
]
}
]
}
我正在嘗試使用 jq 進行類似下面的操作,但我正在嘗試找到一種更具可擴展性的方法來制作 output:
{ "id": .data[].id, "error": .data[].error, "key": .data[].key, "className": .data[].value[].class_name, "inMax": .data[].value[].in_max }
扁平化可以通過這里的慣用表達式del(A) + A[]來完成,剩下的就是構建周圍的結構,這是微不足道的。
.data |= [{values: map(del(.value) + .value[])}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.