在SQLAlchemy & FastAPI中使用json.dumps删除json输出中的额外反斜杠,可以通过以下步骤实现:
from fastapi import FastAPI
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
import json
SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
email = Column(String, unique=True, index=True)
password = Column(String)
app = FastAPI()
@app.get("/users/{user_id}")
def get_user(user_id: int):
db = SessionLocal()
user = db.query(User).filter(User.id == user_id).first()
db.close()
return json.dumps(user, default=str)
在上述代码中,json.dumps
函数用于将查询到的用户对象转换为JSON字符串,并使用default=str
参数指定默认的序列化函数为str
,以确保日期等非字符串类型的字段能够正确序列化。
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
通过以上步骤,你可以在SQLAlchemy & FastAPI中使用json.dumps
删除JSON输出中的额外反斜杠。请注意,这里的示例代码仅涵盖了如何处理JSON序列化的问题,实际应用中可能还需要考虑其他方面的功能和安全性。
领取专属 10元无门槛券
手把手带您无忧上云