微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法正确格式化API json输出

如何解决无法正确格式化API json输出

输入:

import requests
import json
apikey2 = '1234'
headers = {'API-Key':apikey2,'Content-Type':'application/json'}
data = {"url":urlz2,"visibility": "private"}
r2 = requests.post('https://urlscan.io/api/v1/scan/',headers=headers,data=json.dumps(data))
print(r2)
print(r2.json())

输出

<Response [200]>
{'message': 'Submission successful','uuid': 'xxxxxxxx','result': 'https://urlscan.io/result/xxxxxxxxxx/','api': 'https://urlscan.io/api/v1/result/xxxxxxxxxxx/','visibility': 'private','options': {'useragent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/xxxxxxxx Safari/xxxxxx'},'url': 'https://xxxxxxx.io/'}

获取所需信息并将其打印在每行上时遇到麻烦,例如:

message: Submission successful
uuid: xxxxxxxx
result: https://urlscan.io/result/xxxxxxxxxx/
visibility: private

我尝试了类似...的事情

for match in r2.json().get('message',[]):
    print(f'uuid: {message.get("uuid",{}).get("uuid","UnkNown uuid")}')

但由于get且它是字符串而出现错误

解决方法

respons.json()方法返回一个字典。您可以遍历此字典的键和值并进行打印。

import requests
import json
apikey2 = '1234'
headers = {'API-Key':apikey2,'Content-Type':'application/json'}
data = {"url":urlz2,"visibility": "private"}
r2 = requests.post('https://urlscan.io/api/v1/scan/',headers=headers,data=json.dumps(data))
print(r2)
dictionary = r2.json()

for key,value in dictionary.items():
    print(f"{key} = {value}")

如果您要打印特定键的值,并且在未找到该键的情况下显示一条消息,则可以使用以下代码。此代码遍历感兴趣的键,如果该键不在响应字典中,则可以打印一条消息。否则,您将打印键和值。

keys = ["message","uuid","result","visibility"]
response_dict = r2.json()
for key in keys:
    value = response_dict.get(key,None)
    if value is None:
        print(f"{key} = Unknown {key}")
    else:
        print(f"{key} = {value}")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。