有没有一种方法可以用Python过滤JSON数据



我正在使用prtg http api提取传感器信息,我的目标是过滤具有此值的传感器

<status>Down</status>

到目前为止,我已经在堆栈和谷歌搜索中阅读了很多参考文献,但我无法应用这些解决方案,因此粘贴我尝试过的所有代码都是徒劳的我是这个

JSON的结构就像这样

{
  "prtg-version": "19.1.49.1966",
  "treesize": 17701,
  "status%3Ddown": [
    {
      "group": "SOME GROUP",
      "device": "SOME SWITCH",
      "sensor": "Uptime",
      "status": "Down",
      "status_raw": 5
    },
    {
      "group": "SOME GROUP",
      "device": "SOME SWITCH",
      "sensor": "System Health Memory",
      "status": "Up",
      "status_raw": 3
    },
  ]
}

现在是代码

import json
import requests
url = "https://prtg.c3ntro.com/api/table.jsoncontent=status=down&username=usr&passhash=hash&count=100"
response = requests.get(url)
data = response.json()
d = data
result_dict = [d for d in data['status%3Ddown'] if d['status'] == 'Down']
print(result_dict)

#Code has been fixed and now it works

现在仅打印出状态传感器

列表理解应该有效:

[d for d in data['status%3Ddown'] if d['status'] == 'Down']

返回包含"status": "Down""status%3Ddown"列表中的所有条目:

[{'device': 'SOME SWITCH',
  'group': 'SOME GROUP',
  'sensor': 'Uptime',
  'status': 'Down',
  'status_raw': 5}]
d = data["prtg-version", "treesize", "status%3Ddown"]

那条代码线正在尝试使用文字三部分键"prtg-version", "treesize", "status%3Ddown"访问元素,这当然不存在。

看起来您只想要这个:

d = data["status%3Ddown"]

相关内容

  • 没有找到相关文章

最新更新