使用 select 仅过滤部分输入
Filter only part of input using select
给出这样的输入:
{
"type": "collection",
"foo": "bar",
"children": [
{
"properties": {
"country": "GB"
},
"data": "..."
},
{
"properties": {
"country": "PL"
},
"data": "..."
}
]
}
如何使用 jq
保留所有 JSON 结构,但使用 select()
过滤掉一些 children。例如,如果我只想 return 与国家 GB children,我希望得到以下输出:
{
"type": "collection",
"foo": "bar",
"children": [
{
"properties": {
"country": "GB"
},
"data": "..."
}
]
}
如果我只想要 children,使用 .children[] | select(.properties.country == "GB")
很容易,但不会保留 JSON 的其余部分。
关键是要用|=
。在本例中,您可以使用以下模式:
.children |= map(select(...))
给出这样的输入:
{
"type": "collection",
"foo": "bar",
"children": [
{
"properties": {
"country": "GB"
},
"data": "..."
},
{
"properties": {
"country": "PL"
},
"data": "..."
}
]
}
如何使用 jq
保留所有 JSON 结构,但使用 select()
过滤掉一些 children。例如,如果我只想 return 与国家 GB children,我希望得到以下输出:
{
"type": "collection",
"foo": "bar",
"children": [
{
"properties": {
"country": "GB"
},
"data": "..."
}
]
}
如果我只想要 children,使用 .children[] | select(.properties.country == "GB")
很容易,但不会保留 JSON 的其余部分。
关键是要用|=
。在本例中,您可以使用以下模式:
.children |= map(select(...))