JSON-совместимый кодировщик¶
🌐 Перевод выполнен с помощью ИИ и людей
Этот перевод был сделан ИИ под руководством людей. 🤝
В нем могут быть ошибки из-за неправильного понимания оригинального смысла или неестественности и т. д. 🤖
Вы можете улучшить этот перевод,помогая нам лучше направлять ИИ LLM.
В некоторых случаях может потребоваться преобразование типа данных (например, Pydantic-модели) в тип, совместимый с JSON (например,dict,list и т.д.).
Например, если необходимо хранить его в базе данных.
Для этогоFastAPI предоставляет функциюjsonable_encoder().
Использованиеjsonable_encoder¶
Представим, что у вас есть база данныхfake_db, которая принимает только JSON-совместимые данные.
Например, она не принимает объектыdatetime, так как они не совместимы с JSON.
В таком случае объектdatetime следует преобразовать в строку, соответствующуюформату ISO.
Точно так же эта база данных не может принять Pydantic-модель (объект с атрибутами), а толькоdict.
Для этого можно использовать функциюjsonable_encoder.
Она принимает объект, например, Pydantic-модель, и возвращает его версию, совместимую с JSON:
fromdatetimeimportdatetimefromfastapiimportFastAPIfromfastapi.encodersimportjsonable_encoderfrompydanticimportBaseModelfake_db={}classItem(BaseModel):title:strtimestamp:datetimedescription:str|None=Noneapp=FastAPI()@app.put("/items/{id}")defupdate_item(id:str,item:Item):json_compatible_item_data=jsonable_encoder(item)fake_db[id]=json_compatible_item_dataВ данном примере она преобразует Pydantic-модель вdict, аdatetime - вstr.
Результатом её вызова является объект, который может быть закодирован с помощью функции из стандартной библиотеки Python –json.dumps().
Функция не возвращает большойstr, содержащий данные в формате JSON (в виде строки). Она возвращает стандартную структуру данных Python (например,dict) со значениями и подзначениями, которые совместимы с JSON.
Примечание
jsonable_encoder фактически используетсяFastAPI внутри системы для преобразования данных. Однако он полезен и во многих других сценариях.







