JQ重塑嵌套数组
JQ reshape nested array
我对 jq 和嵌套数组有疑问,我不明白为什么它要创建多个对象:
echo '{
"first": [
{
"second": {
"id": 1,
"third": [
{
"value": "aa"
},
{
"value": "bb"
}
]
}
}
]
}' | jq '.first[].second | {id: .id, prop: .third[].value}'
这是返回:
{
"id": 1,
"prop": "aa"
}
{
"id": 1,
"prop": "bb"
}
但我想要:
{
"id": 1,
"prop": ["aa", "bb"]
}
我错过了什么?
您需要将值放入数组中:
jq '.first[].second | {id: .id, prop: [.third[].value]}'
使用 map
内置函数将数组转换为 .value
s:
jq '.first[].second | {id: .id, prop: .third | map(.value)}'
{
"id": 1,
"prop": [
"aa",
"bb"
]
}
我对 jq 和嵌套数组有疑问,我不明白为什么它要创建多个对象:
echo '{
"first": [
{
"second": {
"id": 1,
"third": [
{
"value": "aa"
},
{
"value": "bb"
}
]
}
}
]
}' | jq '.first[].second | {id: .id, prop: .third[].value}'
这是返回:
{
"id": 1,
"prop": "aa"
}
{
"id": 1,
"prop": "bb"
}
但我想要:
{
"id": 1,
"prop": ["aa", "bb"]
}
我错过了什么?
您需要将值放入数组中:
jq '.first[].second | {id: .id, prop: [.third[].value]}'
使用 map
内置函数将数组转换为 .value
s:
jq '.first[].second | {id: .id, prop: .third | map(.value)}'
{
"id": 1,
"prop": [
"aa",
"bb"
]
}