使用jq从嵌套的JSON对象中提取匹配的子json

时间:2015-04-23 20:52:49

标签: json jq

给定一个JSON对象数组:

 {
  "header" : {
    "user" : "baskar"
  },
  "requests" : [ {
    "first_name" : "mike",
    "last_name" : "mat"
  }, {
    "first_name" : "mike1",
    "last_name" : "mat"
  } ],
  "check" : [ "Y" ]
}

我想基于所述条件从所述嵌套的请求中提取键/值的子集,同时从外部对象完好保持其它性质,制造这样的:当我寻找如first_name =“麦克”

{
  "header" : {
    "user" : "baskar"
  },
  "requests" : [ {
    "first_name" : "mike",
    "last_name" : "mat"
  } ],
  "check" : [ "Y" ]
}

我尝试了以下的事情,

[.requests[] | select(.first_name == "mike")]

但是,它给出了匹配请求的子集,但没有返回header和check元素。

我确信必须有一个相当简单的方法来实现这个jq。帮助赞赏。

1 个答案:

答案 0 :(得分:3)

您需要通过过滤更新请求数组来考虑它。

这应该有效:

.requests |= map(select(.first_name == "mike"))