sujingjhong.com


除錯日記#1 FastAPI JSON Compatible Encoder

同事 slack python FastAPI + Pydantic 使用問題。

簡言之,就是他用 Pydantic 做了一個 api response body model;但不知為何,測試時 FastAPI 就是不給用,會跳出錯誤訊息:

Object of type FileListResponse is not JSON serializable

因為名稱是有 File,就猜測是要處理檔案。就之前使用 FastAPI 經驗,處理檔案時,要使用它框架物件。所以問了第一個問題:是否有使用框架物件。

發現是我誤解了,只是要處理檔案清單,並沒有要處理檔案。

接著想到 python 在處理序列化之類的 metaprogramming 是藉由實作約定協定 (protocol),例如 JSON 序列化可以採用繼承 JSONEncoder 方式。

就詢問有沒有實作或引用,沒注意到用 Pydantic 這方案問題通常就是交給套件解決。

那看來可能是 FastAPI,查了下文件,官方有提供相容性編碼器,就請他試試。

OK,解決!

參考資料 #