잘못된 접근 방식:
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 } ]
필요한 경우 개체를 사용자 정의 응답 개체로 반환하기 전에 수동으로 직렬화할 수 있습니다. 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가 Flask와 다르게 JSON 직렬화를 처리하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!