如何使用 jq 查找 JSON 对象中值与给定条件匹配的所有路径?

rew*_*wbs 4 json jq

有没有一种方法可以使用 jq 查找包含与给定条件匹配的值的所有路径?

例如,给定以下 JSON,我想返回“age”值 >35 的所有路径,无论包含该字段的结构的深度如何:

{  
  "springfield":{  
    "marge":{  
      "age":30
    },
    "homer":{  
      "age":40,
      "job":"xyz"
    }
  },
  "shelbyville":{  
    "zone1":{  
      "john":{  
        "age":10
      }
    },
    "zone2":{  
      "mark":{  
        "age":50
      }
    }
  },
  "homeless1":{  
    "age":25
  },
  "homeless2":{  
    "age":60
  }
}
Run Code Online (Sandbox Code Playgroud)

所以执行会产生如下结果:

[
  ["springfield", "homer"],
  ["shelbyville", "zone2", "mark"],
  ["homeless2"]
]
Run Code Online (Sandbox Code Playgroud)

小智 6

这应该可以解决问题:

[paths(.age?>35)]
Run Code Online (Sandbox Code Playgroud)