我试图将父json对象内的嵌套对象数组合并为具有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
}
]
}
]
}
所需输出:
{
"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下面的东西,但我试图找到一个更可扩展的方式来制作输出:
{ "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[])}]
<<p><一口>在线演示/一口>一口>