首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >基于其它已知k/v对从嵌套json中提取k/v对

基于其它已知k/v对从嵌套json中提取k/v对
EN

Stack Overflow用户
提问于 2019-03-25 03:09:03
回答 1查看 75关注 0票数 0

我收到了一个JSON文件,我可以用Python处理它的大部分内容。但是,文件的一部分包含结构类似以下示例的数据。

代码语言:javascript
复制
{
    "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文件可以相对较大,所以我正在寻找一种合理和执行的方法来实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-25 03:22:32

您可以尝试使用jsonpath-ng pip install jsonpath-ng

代码语言:javascript
复制
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'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55327470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档