错误的方法:
使用 json.dumps 序列化对象时() 在 FastAPI 中返回它们之前,JSON 会被序列化两次。这种双重序列化会导致观察到的字符串输出。
要纠正此问题,只需照常返回数据(例如,字典或列表)。 FastAPI 会自动将其转换为 JSON,确保正确表示日期时间对象。
示例:
@app.get('/') async def main(): d = [ {"User": "a", "date": date.today(), "count": 1}, {"User": "b", "date": date.today(), "count": 2}, ] return d
输出:
[ { "User": "a", "date": "2023-01-09", "count": 1 }, { "User": "b", "date": "2023-01-09", "count": 2 } ]
如有必要,您可以在自定义 Response 对象中返回对象之前手动序列化该对象。将 media_type 设置为 'application/json' 并自行编码序列化数据。
示例:
import json @app.get('/') async def main(): d = [ {"User": "a", "date": date.today(), "count": 1}, {"User": "b", "date": date.today(), "count": 2}, ] json_str = json.dumps(d, indent=4, default=str) return Response(content=json_str.encode('utf-8'), media_type='application/json')
输出:
[ { "User": "a", "date": "2023-01-09", "count": 1 }, { "User": "b", "date": "2023-01-09", "count": 2 } ]
以上是为什么 FastAPI 处理 JSON 序列化的方式与 Flask 不同?的详细内容。更多信息请关注PHP中文网其他相关文章!