我是Python的新手。所以我有一个基于Flask的REST API,所以我有一个字典如下所示:
dict = {'left': 0.17037454, 'right': 0.82339555, '_unknown_': 0.0059609693}
我需要将此添加到我的json响应对象中,如下所示:
message = {
'status': 200,
'message': 'OK',
'scores': dict
}
resp = jsonify(message)
resp.status_code = 200
print(resp)
return resp
我遇到以下错误:
....\x.py", line 179, in default
raise TypeError(repr(o) + " is not JSON serializable")
TypeError: 0.027647732 is not JSON serializable
有人可以帮我吗? 谢谢。
答案 0 :(得分:1)
代码对我来说很好。查看以下示例服务器代码:
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()
以下卷曲恢复正常:
$ curl http://localhost:5000/
{
"message": "OK",
"scores": {
"_unknown_": 0.0059609693,
"left": 0.17037454,
"right": 0.82339555
},
"status": 200
}
答案 1 :(得分:0)
当您尝试对不是纯python字典的内容进行JSON解码时,会看到此错误。因此,只需使用易于转换为JSON的纯python对象即可。
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)
它是一个非常简单的代码。
运行此代码后,在浏览器中点击localhost:5000
时,您将看到此输出
{
"message": "OK",
"scores": {
"_unknown_": 0.0059609693,
"left": 0.17037454,
"right": 0.82339555
},
"status": 200
}
我在这里使用过Flask==1.0.2
。
一些观察结果:
请勿使用dict
作为变量名。它是python关键字。
在编写代码时遵循PEP8标准。
不要在代码中保留尾随空格。