无法从我的JSON输出中获取元素

时间:2018-02-10 08:17:56

标签: python json python-3.x python-requests

我对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 \”}]“

1 个答案:

答案 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']