使用 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"))