【发布时间】:2019-11-06 17:21:38
【问题描述】:
在下面的示例中,我想要一个所有有家具的房子的列表。
[
{
"id": "jones house",
"rooms": [
{
"name": "living room",
"furniture": {
"chair": "red"
}
},
{
"name": "bedroom",
"furniture": {
"chair": "blue"
}
},
{
"name": "bathroom",
"furniture": {
}
}
]
},
{
"id": "smith house",
"rooms": [
{
"name": "basement",
"furniture": {
"chair": "green"
}
}
]
},
{
"id": "johnson house",
"rooms": [
{
"name": "study",
"furniture": {
}
}
]
}
]
我正在应用以下 jq 语句:.[] | select(.rooms[].furniture | length > 0) | .id,我将其读作:
- 对于数组中的每个元素,通过管道发送它。
- 如果选择条件为真,则通过管道发送未更改的输入元素。
- 输出id属性。
我期待:
"jones house"
"smith house"
输出看起来像这样:
"jones house"
"jones house"
"smith house"
https://stedolan.github.io/jq/manual/#select(boolean_expression) 状态:
如果 foo 对该输入返回 true,则函数 select(foo) 会产生其输入不变,否则不产生任何输出。
如果select 只能产生它的输入,不变,它怎么能产生两个“jones house”输出?
【问题讨论】: