我正在尝试将父json对象内的嵌套对象数组合并为的单个对象数组jq
。基本上,我想将每个value
对象数组合并到该values
数组下的单个data
数组中。
输入示例:
{
"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[])}]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句