我有以下应用和测试:
app.py
from json import JSONEncoder
from flask import Flask, jsonify
class CustomJSONEncoder(JSONEncoder):
def default(self, obj):
return {"hello": "world"}
app = Flask(__name__)
app.json_encoder = CustomJSONEncoder
@app.route('/')
def main():
return jsonify({'yep': 'this worked'})
if __name__ == '__main__':
app.run()
Run Code Online (Sandbox Code Playgroud)
test_app.py
import json
from app import app
def test_this_should_work():
test_client = app.test_client()
rv = test_client.get('/')
assert json.loads(rv.data.decode()) == {'hello': 'world'}
Run Code Online (Sandbox Code Playgroud)
从我的例子中可以看出,我的代码应该工作并返回另一个字典.但事实并非如此.你可以通过python app.py或运行它py.test(如果你安装py.test),你会发现两次都返回{"yep": "this worked"}.
这里出了点问题 - 我错过了什么?
这不是Flask的问题,它会发送自定义编码器.这就是Python的json库的工作方式.default仅当无法识别被转储的对象时,才会调用该函数.因为你要转储一个字符串,这是一个由库识别的类型,所以它只是按原样转储.
如果要转换数据,请在序列化之前进行转换.
| 归档时间: |
|
| 查看次数: |
1799 次 |
| 最近记录: |