是否有可能以简单的方式使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
]
}
答案 0 :(得分:2)
如果这只是围绕浮动,你可以检查这个答案:how to round off a floating number in python
用于编写自定义JSON编码器的代码片段:Custom Flask JSONEncoder
烧瓶源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}