Python Flask : How to convert a dictionary object to json?
本问题已经有最佳答案,请猛点这里访问。
我对Python还比较陌生。所以我有一个基于flask的RESTAPI,所以我有一个如下所示的字典:
1 | dict = {'left': 0.17037454, 'right': 0.82339555, '_unknown_': 0.0059609693} |
我需要将它添加到我的JSON响应对象中,如下所示:
1 2 3 4 5 6 7 8 9 | message = { 'status': 200, 'message': 'OK', 'scores': dict } resp = jsonify(message) resp.status_code = 200 print(resp) return resp |
我得到以下错误:
1 2 3 | ....\x.py", line 179, in default raise TypeError(repr(o) +" is not JSON serializable") TypeError: 0.027647732 is not JSON serializable |
有人能帮我吗?谢谢。
代码对我来说运行良好。查看以下示例服务器代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from flask import Flask from flask import jsonify app = Flask(__name__) @app.route('/') def hello(): d = {'left': 0.17037454, 'right': 0.82339555, '_unknown_': 0.0059609693} message = { 'status': 200, 'message': 'OK', 'scores': d } resp = jsonify(message) resp.status_code = 200 print(resp) return resp if __name__ == '__main__': app.run() |
以下旋度返回良好:
1 2 3 4 5 6 7 8 9 10 | $ curl http://localhost:5000/ { "message":"OK", "scores": { "_unknown_": 0.0059609693, "left": 0.17037454, "right": 0.82339555 }, "status": 200 } |
当您试图JSonify某个不是纯Python字典的内容时,会出现此错误。所以只需使用纯Python对象,这些对象很容易转换为JSON。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def index(): dict_obj = { 'left': 0.17037454, 'right': 0.82339555, '_unknown_': 0.0059609693 } message = { 'status': 200, 'message': 'OK', 'scores': dict_obj } resp = jsonify(message) resp.status_code = 200 print(resp) return resp if __name__ == '__main__': app.run(debug=True) |
这是一个非常简单的代码。
运行此代码后,当您在浏览器中点击
1 2 3 4 5 6 7 8 9 | { "message":"OK", "scores": { "_unknown_": 0.0059609693, "left": 0.17037454, "right": 0.82339555 }, "status": 200 } |
我在这里用过
很少观察到:
不要将
编写代码时遵循PEP8标准。
不要在代码中保留尾随空格。