FastAPI を使用して JSON 形式のデータを返す
FastAPI アプリケーションを開発する場合、JSON 形式のデータを返すことのニュアンスを理解することが重要です。これには、FastAPI の内部動作を詳しく調べ、JSON シリアル化が果たす役割を理解する必要があります。
JSON シリアル化のジレンマ
問題の中心は json.dumps() の使用にあります。オブジェクトを返す前にオブジェクトをシリアル化します。このアプローチは論理的であるように思えるかもしれませんが、FastAPI が応答生成中に戻り値を自動的に JSON エンコードするため、冗長なシリアル化が導入されます。これにより、きちんとフォーマットされた辞書ではなく、JSON データの文字列表現が一見間違っているように見えます。
解決策
これを修正するには、FastAPI が JSON シリアル化プロセスを処理できるようにする必要があります。これは、データ オブジェクト (辞書、リストなど) を直接返すことで実現できます。 FastAPI は、jsonable_encoder を使用してそれらを JSON 互換データにシームレスに変換し、JSONResponse でラップします。結果の応答には、アプリケーション/json でエンコードされたデータが含まれ、目的の JSON 形式が保証されます。
実装オプション
オプション 1: 戻り値の使用
期待どおりのデータ オブジェクトを返します。 :
@app.get('/') async def main(): return d
舞台裏で、FastAPI は次を使用して dict (d) をシリアル化します。 JSONResponse を取得し、json.dumps() でエンコードします。
オプション 2: カスタム レスポンス オブジェクト
レスポンスを正確に制御する必要がある場合は、Response オブジェクトを直接利用します。
@app.get('/') async def main(): return Response(content=json.dumps(d, indent=4, default=str), media_type='application/json')
このアプローチでは、media_type (例: 'application/json') を自由に指定できます。
注: json.dumps() (str) のデフォルトの引数により、日時オブジェクトのシリアル化が可能になります。インデントを渡すことで、JSON 出力の形式を制御できます。
以上がFastAPI アプリケーションで JSON 形式のデータを効率的に返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

pythonusesahybridmodelofcompilation andtertation:1)thepythoninterpretercompilessourcodeodeplatform-indopent bytecode.2)thepythonvirtualmachine(pvm)thenexecuteTesthisbytecode、balancingeaseoputhswithporformance。

pythonisbothintersedand compiled.1)it'scompiledtobytecode forportabalityacrossplatforms.2)bytecodeisthenは解釈され、開発を許可します。

loopsareideal whenyouwhenyouknumberofiterationsinadvance、foreleloopsarebetterforsituationsは、loopsaremoreedilaConditionismetを使用します

henthenumber ofiterationsisknown advanceの場合、dopendonacondition.1)forloopsareideal foriterating over for -for -for -saredaverseversives likelistorarrays.2)whileopsaresupasiable forsaresutable forscenarioswheretheloopcontinupcontinuspificcond

pythonisnotpurelyLepted; itusesahybridapproachofbytecodecodecodecodecodecodedruntimerttation.1)pythoncompilessourcodeintobytecode、whodythepythonvirtualmachine(pvm).2)

ToconcatenateListsinpythothesheElements、使用:1)Operatortokeepduplicates、2)asettoremoveduplicates、or3)listcomplunting for controloverduplicates、各メトドハスディフェルフェルフェントパフォーマンスアンドソーダーインプリテーション。

pythonisantertedlanguage、useaseofuseandflexibility-butfactingporformantationationsincriticalapplications.1)解釈されたlikepythonexecuteline-by-lineを解釈します

Useforloopswhenthenumberofiterationsisknowninadvance、andwhiloopswheniterationsdependonacondition.1)forloopsareidealforsecenceslikelistoranges.2)


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
