Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Json序列化问题_Python_Json_Serialization - Fatal编程技术网

Python Json序列化问题

Python Json序列化问题,python,json,serialization,Python,Json,Serialization,可能是一个非常基本的问题,但我找不到答案,因为这需要我没有的知识,或者不适用于我的案例 我正在运行一个简单的python脚本来获得一些json响应。基本上我有一个防火墙,我需要从配置文件中“读取”一些信息 以下是我的python脚本中有趣的部分: client = requests.session() requests.packages.urllib3.disable_warnings() api_cmdb = 'api/v2/cmdb/' api_monitor = 'api/v2/mo

可能是一个非常基本的问题,但我找不到答案,因为这需要我没有的知识,或者不适用于我的案例

我正在运行一个简单的python脚本来获得一些json响应。基本上我有一个防火墙,我需要从配置文件中“读取”一些信息

以下是我的python脚本中有趣的部分:

client = requests.session() 

requests.packages.urllib3.disable_warnings()

api_cmdb = 'api/v2/cmdb/'
api_monitor = 'api/v2/monitor/'



try:
    login = client.post(url + '/logincheck', data="username=" + name + "&secretkey=" + password, verify = False)
except requests.exceptions.ConnectionError:
    requests.status_code = "Connection refused"

ini = client.cookies['ccsrftoken']
csrftoken = ini[1:-1]
client.headers.update({"X-CSRFTOKEN": csrftoken})


ae = client.get(url + api_cmdb + 'router/static', verify = False, params = {'vdom': 'root'})

#print json.dumps(vars(ae))

resp = ae.json()
pprint(resp)
client_logout = client.post(url + '/logout', verify = False)
client.close()
我们在使用ae.json()时得到了这个结果:

我不明白的是,为什么当我发布print json.dumps(vars(ae))或print json.dumps(ae)时会得到一个:

raisetypeerror(repr(o)+“不可JSON序列化”)
TypeError:不可序列化JSON

非常感谢

这是因为
ae
是一个
响应
对象。调用
ae.json()
时,它返回该响应对象的json表示形式,但尝试手动序列化它将抛出错误,因为
json
模块不知道如何将
响应
对象转换为有效的json。你应该给我打个电话

print json.dumps(ae.json())
它将使用自己的内部逻辑(
.JSON()
方法)获取
响应
对象的JSON表示,然后打印它的字符串版本。

vars(ae)
ae。uu dict\uuu
返回对象属性和值的字典。如果您检查它,您将看到它不仅包含响应主体(通过调用
ae.json()
)转换为json),还包含许多其他属性。通常,它们中的一些可能是对象(在您的例子中是来自
请求的
响应
对象),而不仅仅是字符串、列表等简单类型

如果您想继续(如果这对您有意义的话),您需要继续自己的
json.jsonecoder
json.JSONDecoder
实现

raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <Response [200]> is not JSON serializable
print json.dumps(ae.json())