【发布时间】:2018-09-30 21:04:36
【问题描述】:
我有一个看起来像这样的 json(它是简单的 jq 过滤器的结果):
[{
"name": "Corrine",
"firstname": "Odile",
"uid": "PA2685",
"roles": [{
"role_name": "GQ",
"start": "2012-06-20"
},
{
"role_name": "HOUSE",
"start": "2012-06-26"
},
{
"role_name": "HOUSE",
"start": "2017-06-28"
}
]
},
{
"name": "Blanche",
"firstname": "Matthieu",
"uid": "PA2685",
"roles": [{
"role_name": "SENATE",
"start": "2014-06-20"
},
{
"role_name": "SENATE",
"start": "2012-06-26"
},
{
"role_name": "SENATE",
"start": "2012-06-28"
}
]
}
]
我想通过两种方式过滤:
- 只选择至少有一个
role_name(在roles数组内)值为HOUSE的第一级对象; - 并从该组中仅选择至少有一个
start的日期在 2017 年或之后的组。
在上面的 json 中,“Corrine Odile”将是唯一一个被选中的。
我尝试了一些with_entries(select(.value 表达式,但我对如何处理日期以及“至少一个”要求感到困惑。
【问题讨论】:
-
请遵循 mcve 指南stackoverflow.com/help/mcve。特别是,示例输入不是有效的 JSON,因此并不完全清楚“第一级对象”是什么。
-
对不起,实际的 json 有数百行长,所以我只使用了开头而忘记放右大括号。现在修复了@peak