循环遍历 json 并仅返回 true 元素



>通过 API,我接收 json 输出,而不是写入所有输出进行分析,我只想要具有"true"值的数据。

原始 json 数据示例:

scans:
   Scanner1:
      detected: false
      version: "1.1.1.1"
      result: null
      update: "14123412"
   Scanner2:
      detected: true
      version: "2.2.2.2"
      result: "trojan"
      update: "23142551"

蟒蛇代码

with open('C:\output.json', 'w') as outfile:
   for item in data["scans"]:
      if 'item["detected"] === true
         json.dump(data)

期望的输出

scans:
    Scanner2:
       detected: true
       version: "2.2.2.2"
       result: "trojan"
       update: "23142551"

这绝不有效,我不知道 JSON,但我必须证明我尝试过哈哈。

谢谢!

更新

import requests

url = '<url>'
params = {'apikey': <key>, 'resource': '<value>'}
response = requests.get(url, params=params)
result = []
with open('C:\output.json', 'w') as outfile:
  data = response.json()
  for i in data['scans']:
    if (i['detected']=='true'):         // error thrown here
      result.append(i)                  // TypeError: string indices must be integers

print(result)

您的原始数据 json 看起来不像 json(查找 json 的样子(。但是假设它被复制错误,以下字典理解将适用于 json:


data = response.json()
with open('C:\output.json', 'w') as outfile:
    result = {k: v for k, v in data['scans'].items() if v['detected']}
    outfile.write(json.dumps(result))
result =[]
with open('C:\output.json', 'w') as outfile:
  data = json.load(outfile)
  for i in data['scans']:
    if i['detected']=='true':
      result.append(i) 
print(result)