Tengo un Pandas DataFrame con varias columnas y algunos datos que necesito devolver en un cuerpo de respuesta de una aplicación FastAPI. Tomando prestado el ejemplo de DataFrame de otra pregunta similar, pero diferente:
test_list = [["Joe", 34, "Accounts", 10000], ["Jack", 35, "Chemistry", 20000], ["Jill", 37, "Art", 2000]] df = pandas.DataFrame(data=test_list, columns=["Name", "Age", "Dept.", "Salary"])Ahora, si trato de usar dataframe.to_json de la siguiente manera, el cuerpo devuelto es una cadena con cada carácter de comilla escapado y no es JSON:
result = df.to_json(orient="records") #creates a json string return JSONResponse(content = result)Lo anterior devuelve algo como:
"[{\"Name:\":\"Joe\", \"Age\":\"34\"}, ...etc"Lo siguiente funciona (en el sentido de que el cuerpo devuelto es JSON válido), pero no me gusta que la respuesta se devuelva como texto sin formato en lugar de JSON. ¿Hay una manera mejor y más adecuada de hacer esto?
result = df.to_json(orient="records") return PlainTextResponse(content = result)En lugar de json , conviértalo para fastapi dict poder manejar automáticamente:
result = df.to_dict('records') return JSONResponse(content = result)