Codificador compatible con JSON¶
🌐 Traducción por IA y humanos
Esta traducción fue hecha por IA guiada por humanos. 🤝
Podría tener errores al interpretar el significado original, o sonar poco natural, etc. 🤖
Puedes mejorar esta traducciónayudándonos a guiar mejor al LLM de IA.
Hay algunos casos en los que podrías necesitar convertir un tipo de dato (como un modelo de Pydantic) a algo compatible con JSON (como undict,list, etc).
Por ejemplo, si necesitas almacenarlo en una base de datos.
Para eso,FastAPI proporciona una funciónjsonable_encoder().
Usando eljsonable_encoder¶
Imaginemos que tienes una base de datosfake_db que solo recibe datos compatibles con JSON.
Por ejemplo, no recibe objetosdatetime, ya que no son compatibles con JSON.
Entonces, un objetodatetime tendría que ser convertido a unstr que contenga los datos enformato ISO.
De la misma manera, esta base de datos no recibiría un modelo de Pydantic (un objeto con atributos), solo undict.
Puedes usarjsonable_encoder para eso.
Recibe un objeto, como un modelo de Pydantic, y devuelve una versión compatible con 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_dataEn este ejemplo, convertiría el modelo de Pydantic a undict, y eldatetime a unstr.
El resultado de llamarlo es algo que puede ser codificado con la función estándar de Pythonjson.dumps().
No devuelve un granstr que contenga los datos en formato JSON (como un string). Devuelve una estructura de datos estándar de Python (por ejemplo, undict) con valores y sub-valores que son todos compatibles con JSON.
Nota
jsonable_encoder es utilizado internamente porFastAPI para convertir datos. Pero es útil en muchos otros escenarios.







