Python 无法从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

我对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(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:…
)以获取每一个或您需要的任何其他内容。