Python 无法从JSON输出中获取元素
我对python非常陌生,还在学习。我正在对一个应用程序进行API调用,该应用程序返回一些不可靠的输出,我想我已经成功地将其转换为JSON。但是当我尝试使用这些键访问JSON数据时,我得到了一些错误 下面是我自己设法做到的-Python 无法从JSON输出中获取元素,python,json,python-3.x,python-requests,Python,Json,Python 3.x,Python Requests,我对python非常陌生,还在学习。我正在对一个应用程序进行API调用,该应用程序返回一些不可靠的输出,我想我已经成功地将其转换为JSON。但是当我尝试使用这些键访问JSON数据时,我得到了一些错误 下面是我自己设法做到的- import requests from requests.auth import HTTPBasicAuth import json import re url = 'url' def get_FOA(): call_to_get = requests.get
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/other.py”,
第26行,在
get_FOA()文件“D:/joffscp/other.py”,第19行,在get_FOA中
Field['name']TypeError:字符串索引必须是整数
当我打印带有JSON输出的“field”时,我得到了如下结果
“[{\”\u ref\”:
\“dhcpfailover/ZG5zLmRoY3BfZmFpbG92ZXJfYXNzb2NpYXRpb24kZnJlLg:fre\”,
\“name\:\“fre\”},{\“\u ref\”:
\“dhcpfailover/ZG5zLmRoY3BfZmFpbG92ZXJfYXNzb2NpYXRpb24kdGVzdC1taWNyb3NvZnQuNg:测试microsoft/10.192.32.161\”,
\“name\”:\“test microsoft\”},{\“\u ref\”:
\“dhcpfailover/ZG5zLmRoY3BfZmFpbG92ZXJfYXNzb2NpYXRpb24kTXNfdGVzdC42:Ms_测试/10.192.32.161\”,
\“name\:\“Ms\u test\”},{\“\u ref\”:
\“dhcpfailover/ZG5ZLMROY3BFZMFPBG92ZXJFYXNZB2NPYXRPB24KBGV3AW5KB3DZLDWLJE5Mi4ZMI4XNJEUNG:lewindows-10.192.32.161/10.192.32.161\”,
\“name\”:\“lewindows-10.192.32.161\”}]
field=json.dumps(dd)
将获取一个对象(dd
)并将其转换为字符串。这就是为什么会出现错误-field
是一个字符串,不能执行field['name']
您已经将JSON的结果作为字典从call_to_get.JSON()
中获取。不要将其转换为字符串-您只需执行call\u to\u 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']
field=json.dumps(dd)
将获取一个对象(dd
)并将其转换为字符串。这就是为什么会出现错误-field
是一个字符串,不能执行field['name']
您已经将JSON的结果作为字典从call_to_get.JSON()
中获取。不要将其转换为字符串-您只需执行call\u to\u 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']
我试过了,但Python发现“field”不知怎么是一个列表。我在某处读到,.json()恐怕会生成一个列表,不知道如何继续。
Traceback(最近一次调用):文件“D:/joffscp/other.py”,第24行,在get_FOA()文件“D:/joffscp/other.py”,第17行,在get_FOA return field['name'中TypeError:列表索引必须是整数或片,而不是str
哦,你的json是一个字典列表,每个字典都有一个name
属性。你必须将它们循环到(for x in field:…
)才能得到每个,或者你需要的任何东西。我尝试了这个,但Python发现“field”不知怎么就是一个列表。我在某处读到.json()可能会生成一个列表,我不知道如何继续<代码>回溯(最后一次调用):文件“D:/joffscp/other.py”,第24行,在get_FOA()文件“D:/joffscp/other.py”的第17行,在get_FOA返回文件['name']TypeError:列表索引必须是整数或片,而不是str噢,您的json是一个字典列表,每个字典都有一个name
属性。您必须将它们循环到(for x in field:…
)以获取每一个或您需要的任何其他内容。