Skip to content

Latest commit

 

History

History
34 lines (19 loc) · 1.92 KB

encoder.md

File metadata and controls

34 lines (19 loc) · 1.92 KB

JSON互換エンコーダ

データ型(Pydanticモデルのような)をJSONと互換性のあるもの(dictlistなど)に変更する必要がある場合があります。

例えば、データベースに保存する必要がある場合です。

そのために、FastAPIjsonable_encoder()関数を提供しています。

jsonable_encoderの使用

JSON互換のデータのみを受信するデータベースfase_dbがあるとしましょう。

例えば、datetimeオブジェクトはJSONと互換性がないので、このデーターベースには受け取られません。

そのため、datetimeオブジェクトはISO形式のデータを含むstrに変換されなければなりません。

同様に、このデータベースはPydanticモデル(属性を持つオブジェクト)を受け取らず、dictだけを受け取ります。

そのためにjsonable_encoderを使用することができます。

Pydanticモデルのようなオブジェクトを受け取り、JSON互換版を返します:

{!../../../docs_src/encoder/tutorial001.py!}

この例では、Pydanticモデルをdictに、datetimestrに変換します。

呼び出した結果は、Pythonの標準のjson.dumps()でエンコードできるものです。

これはJSON形式のデータを含む大きなstrを(文字列として)返しません。JSONと互換性のある値とサブの値を持つPython標準のデータ構造(例:dict)を返します。

!!! note "備考" jsonable_encoderは実際には FastAPI が内部的にデータを変換するために使用します。しかしこれは他の多くのシナリオで有用です。