>通过 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)