是否可以通过一种简单的方式使 jsonify 格式浮点到小数点后一位?
这是一个简单的例子。如何添加自定义 json 编码器:
from flask import Flask, jsonify
from flask.ext.restful import Api, Resource
app = Flask(__name__)
api = Api(app)
class Test(Resource):
def get(self):
return jsonify({'data': [.444, .456]});
api.add_resource(Test, '/')
if __name__ == '__main__':
app.run()
因此输出将是:
{
"data": [
0.4,
0.5
]
}
最佳答案
如果这只是关于舍入 float ,您可以检查这个答案:how to round off a floating number in python
为了编写自定义 JSON 编码器,此代码片段:Custom Flask JSONEncoder
Flask 源 JSON 库 here
编辑: 这里的问题仍然是您想对什么类型的数据执行什么操作,以及何时执行此操作。在某些情况下,您可能根本不想对其应用任何更改。您可以选择首先检查类型,然后确定在将数据传递给编码器之前如何处理数据,或者将所有逻辑放入自定义编码器类本身。
小例子:
import json
import math
from flask.json import dumps, JSONEncoder
def round_float(data):
if type(data) is float:
rounded = math.ceil(data*100)/100
return rounded
else:
raise TypeError('data must be a float not %s' %type(data))
class CustomJSONEncoder(JSONEncoder):
def default(self, o):
#alternatively do the type checking in the default method
if type(o) is float:
return round_float(o)
if type(o) is int:
return float(o)
encoder = CustomJSONEncoder()
data = dict(floated=encoder.default(2))
data2 = dict(rounded=encoder.default(0.896))
dumps(data)
dumps(data2)
将输出:
{"floated": 2.0}
{"rounded": 0.9}
关于python - 如何在Python Flask中实现自定义json格式化程序来舍入 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32118051/