我收到了一个JSON文件,我可以用Python处理它的大部分内容。但是,文件的一部分包含结构类似以下示例的数据。
{
"panObjectAggregateResultList": [
{"rownumber": 1,"field": "detector","id": "331","description": "running jobs","count": 4,"quantile": null,"quantile_class": null},
{"rownumber": 2,"field": "detector","id": "51","description": "closed lines","count": 29,"quantile": null,"quantile_class": null},
{"rownumber": 3,"field": "detector","id": "334","description": "pids","count": 2,"quantile": null,"quantile_class": null}
]
}
例如,我需要获取“运行作业”的值计数,然而,在Python中我必须搜索文件的唯一“值”是“运行作业”。
我试图实现的是(A)基于"description":"running job“从count获取值,或者(B)基于"description":"running job”获取JSON路径,这样我就可以手动获取count的值。
我一直在研究JSONPath RW和其他一些选择,但是到目前为止还没有找到明确的解决方案来以一种合理的方式做到这一点。
问题是,我不能改变源代码中的JSON来使这件事变得更容易,因为我不拥有REST API,并且JSON文件可以相对较大,所以我正在寻找一种合理和执行的方法来实现这一点。
发布于 2019-03-25 03:22:32
您可以尝试使用jsonpath-ng pip install jsonpath-ng
。
from jsonpath_ng.ext import parse
null = None
json_data = {
"panObjectAggregateResultList": [
{"rownumber": 1,"field": "detector","id": "331","description": "running jobs","count": 4,"quantile": null,"quantile_class": null},
{"rownumber": 2,"field": "detector","id": "51","description": "closed lines","count": 29,"quantile": null,"quantile_class": null},
{"rownumber": 3,"field": "detector","id": "334","description": "pids","count": 2,"quantile": null,"quantile_class": null}
]
}
f = parse(f"$..panObjectAggregateResultList[?(@..description=='running jobs')]").find(json_data)
print(f[0].value['count'])
https://stackoverflow.com/questions/55327470
复制相似问题