使用 jq 从嵌套的 JSON object 中提取匹配的 child json
Extracting matched child json from a nested JSON object with jq
给定 JSON 个 object 数组,因此:
{
"header" : {
"user" : "baskar"
},
"requests" : [ {
"first_name" : "mike",
"last_name" : "mat"
}, {
"first_name" : "mike1",
"last_name" : "mat"
} ],
"check" : [ "Y" ]
}
我想根据条件从嵌套请求中提取 key/values 的一个子集,同时保持外部 object 中的其他属性完好无损,生成如下内容:当我搜索时对于 first_name='mike'
{
"header" : {
"user" : "baskar"
},
"requests" : [ {
"first_name" : "mike",
"last_name" : "mat"
} ],
"check" : [ "Y" ]
}
我尝试了下面的方法,
[.requests[] | select(.first_name == "mike")]
但是,它给出了匹配请求的子集,但不返回 header 和检查元素。
我相信一定有一种相当简单的方法可以用 jq 实现这一点。帮助表示赞赏。
您需要考虑通过过滤来更新请求数组。
这应该有效:
.requests |= map(select(.first_name == "mike"))
给定 JSON 个 object 数组,因此:
{
"header" : {
"user" : "baskar"
},
"requests" : [ {
"first_name" : "mike",
"last_name" : "mat"
}, {
"first_name" : "mike1",
"last_name" : "mat"
} ],
"check" : [ "Y" ]
}
我想根据条件从嵌套请求中提取 key/values 的一个子集,同时保持外部 object 中的其他属性完好无损,生成如下内容:当我搜索时对于 first_name='mike'
{
"header" : {
"user" : "baskar"
},
"requests" : [ {
"first_name" : "mike",
"last_name" : "mat"
} ],
"check" : [ "Y" ]
}
我尝试了下面的方法,
[.requests[] | select(.first_name == "mike")]
但是,它给出了匹配请求的子集,但不返回 header 和检查元素。
我相信一定有一种相当简单的方法可以用 jq 实现这一点。帮助表示赞赏。
您需要考虑通过过滤来更新请求数组。
这应该有效:
.requests |= map(select(.first_name == "mike"))