Python 基于键值过滤器的jq查询json键
我有一个带key的json文件,值是一个带key-value对的json。我想根据内部键值对过滤和提取密钥。非常感谢您的帮助 json数据示例:Python 基于键值过滤器的jq查询json键,python,json,jq,Python,Json,Jq,我有一个带key的json文件,值是一个带key-value对的json。我想根据内部键值对过滤和提取密钥。非常感谢您的帮助 json数据示例: { "key1": { "filterkey": "filtervalue", "key1": "value1" }, "key2": { "key1": "value1", "key2": "value2" } } 筛选器:“filterkey”:“filterval
{
"key1": {
"filterkey": "filtervalue",
"key1": "value1"
},
"key2": {
"key1": "value1",
"key2": "value2"
}
}
- 筛选器:“filterkey”:“filtervalue”
- 预期输出:“键1”
“key1”:“nota dict”
),那么这就解决了您的问题:
ret = []
for k, v in js.items():
if v.get("filterkey") == "filtervalue":
ret.append(k)
运行代码段以查看输出:
var jsonObject={
“关键1”:{
“filterkey”:“filtervalue”,
“键1”:“值1”
},
“键2”:{
“键1”:“值1”,
“键2”:“值2”
}
};
函数filterKey(jsonObject、keySearch、valueSearch){
var结果=null;
for(jsonObject中的常量键){
if(jsonObject.hasOwnProperty(键)和
jsonObject[key][keySearch]!==未定义&&
jsonObject[key][keySearch]==valueSearch){
结果=键;
打破
}
}
返回结果;
}
警报(filterKey(jsonObject,'filterKey','filtervalue')代码>
选择by filterkey,将对象转换为键值entires,然后获取第二个条目的键。输出为:
"key1"
在本例中,“key1”多次出现,但看起来您需要最外层的键名。如果是这种情况,那么使用来搜索条目
是一种很好的方法,例如:
to_entries[]
| if .value.filterkey == "filtervalue" then .key else empty end
或相当于:
to_entries[]
| select(.value.filterkey == "filtervalue" )
| .key
您需要在json的任意深度工作还是只在顶层工作?你真的期望“key1”
还是[“key1”]
,因为可能存在多个键?@M.Rau json深度将始终相同。。只是会有更多的键,请通过避免重复“键1”来增强示例。
to_entries[]
| select(.value.filterkey == "filtervalue" )
| .key