python - Json序列化问题

标签 python json serialization

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

我正在运行一个简单的 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() 时我们得到这个结果:

{u'build': 1547,
 u'http_method': u'GET',
 u'http_status': 200,
 u'name': u'static',
 u'path': u'router',
 u'results': [{u'blackhole': u'disable',
               u'comment': u'',
               u'device': u'port1',
               u'distance': 10,
               u'dst': u'0.0.0.0 0.0.0.0',
               u'dstaddr': u'',
               u'dynamic-gateway': u'disable',
               u'gateway': u'192.168.1.99',
               u'internet-service': 0,
               u'internet-service-custom': u'',
               u'link-monitor-exempt': u'disable',
               u'priority': 0,
etc.

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

raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <Response [200]> is not JSON serializable

非常感谢

最佳答案

这是因为 ae 是一个 Response 对象。当您调用 ae.json() 时,它会返回该响应对象的 JSON 表示形式,但尝试手动序列化它会引发错误,因为 json 模块不知道如何序列化将 Response 对象转换为有效的 JSON。你应该调用类似

print json.dumps(ae.json())

它将使用其自己的内部逻辑(.json() 方法)获取 Response 对象的 JSON 表示形式,然后打印它的字符串版本。

关于python - Json序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49497542/

相关文章:

python - 配置tomcat在Tomcat 7上运行python脚本

java - 错误 org.json.JSONObject 无法转换为 JSONArray

delphi - 将任何记录转换为字符串并返回?

python - 使用python获取Linux中所有已挂载的文件系统的列表

serialization - 获取架构反序列化错误 : Invalid default for field

ruby-on-rails - 向 ActiveRecord 序列化添加更多属性?

jquery - 设置来自 Flask 的 iframe src 响应

python - 如何将.html文件输出到.doc文件django

python - 从 __init__.py 中导入类以生成更短的导入语句是否存在问题?

iphone - iOS5 JSON 基础知识