使用jq递归查找第一个具有给定键名的json对象

时间:2019-06-12 13:57:32

标签: json limit jq

如何使用jq递归查找具有给定名称的第一个键?

假设我具有JSON结构:

{
  "firstKey": { 
      "secondKey": {
          "model": {
              "name": {
                  ....
               } 
           }
       }
   }
}   

在这种情况下,有什么方法可以告诉jq返回我第一次找到的具有键名的json对象吗?因此它返回:

"model": {
    "name:" {
      ....
    } 
}

1 个答案:

答案 0 :(得分:2)

要仅选择第一个,请使用first

first(.. | objects | select(has("model")))

或者如果最小化击键是目标:

first(..|select(.model?))

或者,如果您的输入包含多个顶级JSON文档,并且您最多只希望其中一个:

jq -n 'first(inputs|..|select(.model?))'