如何使用python和jq从多个值中选择json值

2024-09-30 12:28:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在为json的东西而挣扎。我有“单位号”和“键”值,我想根据单位号和键值找到备份ID。如何使用python实现这一点?我喜欢这个jq查询,但我以前从未尝试过。我不知道如何在python中调用jq

jq .guest_disk_facts[] |  select(any(.attributes[]?; .unit_number=="2" and .key" == "2002")).backing_uuid and output: 9000da43-8471-57a6-8b18-4425a356b3cb

我有这样的json文件:

{
    "changed": false,
    "failed": false,
    "guest_disk_facts": {
        "0": {

            "backing_uuid": "9000da43-8471-57a6-8b18-92381ab3c3f6",
            "key": 2000,
            "unit_number": 0
        },
        "1": {
            "backing_uuid": "9000da43-8471-57a6-8b18-2788c2398ba7",
            "key": 2001,
            "unit_number": 1
        },
        "2": {
            "backing_uuid": "9000da43-8471-57a6-8b18-4425a356b3cb",
            "key": 2002,
            "unit_number": 2
        }
    }
}

Tags: andkeyjsonfalsenumberuuidunit单位
2条回答
for thing in dic['guest_disk_facts']:
    if thing['key'] == key and thing['unit_number'] == unit_number:
        print(thing['backing_uuid'])
        break

由于.unit\u number和.key已经是数字,jq查询将是:

.guest_disk_facts[]
| select(.unit_number==2 and .key == 2002).backing_uuid

至于在jq中使用python,请参见Is there a way to execute jq from python

相关问题 更多 >

    热门问题