python - 如何使用 python 和 jq 从多个值中选择 json 值
问题描述
我一直在努力解决 json 的问题。我有“unit_number”和“key”值,我想根据 unit_number 和 key 值找到 backing_uuid。我怎么能用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
}
}
}
解决方案
由于 .unit_number 和 .key 已经是数字,jq 查询将是:
.guest_disk_facts[]
| select(.unit_number==2 and .key == 2002).backing_uuid
至于将python与jq一起使用,请参见例如Is there a way to execute jq from python
推荐阅读
- java - 多个登录 URL Spring Security
- c - 输出窗口中的 UTF-8 字符编辑不正确
- python - 如何将切片对象的负索引解析为 argparse.ArgumentParser
- swift - Go vs Swift 中的 UTF8 字符串长度和索引
- tfs - 如何在 TFS 中查看 Epic
- ios - SearchResultsController 与 UINavigationItem 一起使用时会遮挡屏幕
- mysql - 创建引用元值的 sql 查询
- python - python - 使用一些哈希技术比较签名时使用opencv和python时numpy出错
- azure - 获取创建 Azure 事件中心 EventData 消息的日期时间
- python - python datetime和pandas to_datetime在覆盖相同的时间戳时有不同的输出