我对python很新,还在学习。我正在对一个返回一些不稳定输出的应用程序进行API调用,我想我已经设法将它转换为JSON。但是当我尝试使用Keys访问JSON数据时,我遇到了一些错误。
以下是我自己设法做的事情 -
import requests
from requests.auth import HTTPBasicAuth
import json
import re
url = 'url'
def get_FOA():
call_to_get = requests.get(url + "data", verify=False, auth=HTTPBasicAuth(username, Password))
dd = str(call_to_get.json())
dd = dd.replace("'",'"')
filed = json.dumps(dd)
filed['name']
当我运行上面的代码时,我得到以下错误。
回溯(最近一次调用最后一次):文件“D:/joffscp/another.py”, 第26行,在 get_FOA()文件“D:/joffscp/another.py”,第19行,在get_FOA中 filed ['name'] TypeError:字符串索引必须是整数
当我打印带有JSON输出的'filed'时,我得到以下内容。
“[{\” _ REF \“: \ “dhcpfailover / ZG5zLmRoY3BfZmFpbG92ZXJfYXNzb2NpYXRpb24kZnJlLg:FRE \”, \“name \”:\“fre \”},{\“_ ref \”: \ “dhcpfailover / ZG5zLmRoY3BfZmFpbG92ZXJfYXNzb2NpYXRpb24kdGVzdC1taWNyb3NvZnQuNg:测试微软/ 10.192.32.161 \”, \“name \”:\“test-microsoft \”},{\“_ ref \”: \ “dhcpfailover / ZG5zLmRoY3BfZmFpbG92ZXJfYXNzb2NpYXRpb24kTXNfdGVzdC42:Ms_test / 10.192.32.161 \”, \“name \”:\“Ms_test \”},{\“_ ref \”: \ “dhcpfailover / ZG5zLmRoY3BfZmFpbG92ZXJfYXNzb2NpYXRpb24kbGV3aW5kb3dzLTEwLjE5Mi4zMi4xNjEuNg:lewindows-10.192.32.161 / 10.192.32.161 \”, \“name \”:\“lewindows-10.192.32.161 \”}]“
答案 0 :(得分:2)
filed = json.dumps(dd)
将获取一个对象(dd
)并将其转换为字符串。这就是您收到错误的原因 - filed
是一个字符串,您无法执行filed['name']
。
您已将JSON的结果作为call_to_get.json()
的字典。不要把它变成一个字符串 - 你可以做call_to_get.json()['name']
:
def get_FOA():
call_to_get = requests.get(url + "data", verify=False, auth=HTTPBasicAuth(username, Password))
filed = call_to_get.json()
return filed['name']