mirror of
https://github.com/fastapi/fastapi.git
synced 2026-02-06 04:11:14 -05:00
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Yurii Motov <yurii.motov.monte@gmail.com> Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com> Co-authored-by: Maruo.S <raspi-maru2004@outlook.jp>
1.9 KiB
1.9 KiB
JSON互換エンコーダ
データ型(Pydanticモデルのような)をJSONと互換性のあるもの(dictやlistなど)に変換する必要があるケースがあります。
例えば、データベースに保存する必要がある場合です。
そのために、FastAPI はjsonable_encoder()関数を提供しています。
jsonable_encoderの使用
JSON互換のデータのみを受信するデータベースfake_dbがあるとしましょう。
例えば、datetimeオブジェクトはJSONと互換性がないので、受け取られません。
そのため、datetimeオブジェクトはISO形式のデータを含むstrに変換されなければなりません。
同様に、このデータベースはPydanticモデル(属性を持つオブジェクト)を受け取らず、dictだけを受け取ります。
そのためにjsonable_encoderを使用することができます。
Pydanticモデルのようなオブジェクトを受け取り、JSON互換版を返します:
{* ../../docs_src/encoder/tutorial001_py310.py hl[4,21] *}
この例では、Pydanticモデルをdictに、datetimeをstrに変換します。
呼び出した結果は、Pythonの標準のjson.dumps()でエンコードできるものです。
これはJSON形式のデータを含む大きなstrを(文字列として)返しません。JSONと互換性のある値とサブの値を持つPython標準のデータ構造(例:dict)を返します。
/// note | 備考
jsonable_encoderは実際には FastAPI が内部的にデータを変換するために使用します。しかしこれは他の多くのシナリオで有用です。
///