【发布时间】:2021-12-30 05:32:42
【问题描述】:
我想使用 jq 过滤器转换 JSON 数据
Json 数据:
{
"main": [
{
"firstKey": "ABCD",
"id": "12345",
"data": [
{
"name": "first_id",
"value": "first_id_value"
},
{
"name": "second_id",
"value": "second_id_value"
},
{
"name": "third_id",
"value": "third_id_value"
}
]
}
]
}
预期输出:
{
"firstKey": "ABCD",
"id": "12345",
"data.name.first_id": "first_id_value",
"data.name.second_id": "second_id_value",
"data.name.third_id": "third_id_value"
}
经过多次尝试和错误,我使用以下过滤器表达式接近预期输出
[.main[]|{"firstKey", "id"},foreach .data[] as $item (0; "data.name.\($item.name)" as $a|$item.value as $b| {($a): $b})][]
使用 foreach 作为“数据”下的对象是动态的。对象的数量可以不同。 上述表达式的输出是:
{
"firstKey": "ABCD",
"id": "12345"
}
{
"data.name.first_id": "first_id_value"
}
{
"data.name.second_id": "second_id_value"
}
{
"data.name.third_id": "third_id_value"
}
但我希望 数据对象位于与“firstKey”和“id”相同的大括号下。
任何建议都会有所帮助。
【问题讨论】: