亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 SQLAlchemy 和 FastAPI 中的 json.dumps 刪除 json

如何使用 SQLAlchemy 和 FastAPI 中的 json.dumps 刪除 json

白衣染霜花 2022-11-09 16:47:49
好的,所以我的課程設置如下:class ToDictMixin(object):    def to_dict(self, camelcase=True):        if camelcase:            return {to_camelcase(column.key): getattr(self, attr) for attr, column in self.__mapper__.c.items()}        else:            return {column.key: getattr(self, attr) for attr, column in self.__mapper__.c.items()}class Company(Base, ToDictMixin):    __tablename__ = 'companies'    number = Column(Integer, primary_key=True)    name = Column(String)    incorporated = Column(Date)我也有這些功能:def to_camelcase(s):    return re.sub(r'(?!^)_([a-zA-Z])', lambda m: m.group(1).upper(), s)def alchemyencoder(obj):    """    JSON encoder function for SQLAlchemy special classes.    """    if isinstance(obj, datetime.date):        return obj.isoformat()    elif isinstance(obj, decimal.Decimal):        return float(obj)def to_json(self, rel=None):    return json.dumps(self.to_dict(), default=alchemyencoder)在我的 FastAPI 文件中,我執行以下操作:@app.get("/testrequest")def test_request():    query = SESSION.query(Company).order_by(Company.number).filter_by(name="PAARTI LTD")    return {"company": to_json(i) for i in query}在加載此頁面之前,我在 python 控制臺中測試了以下內容:>>> query = SESSION.query(Company).order_by(Company.number).filter_by(name="PAARTI LTD")>>> a = query[0]>>> a.to_dict(){'created': datetime.datetime(2020, 5, 7, 13, 10, 5), 'number': 12585493, 'name': 'PAARTI LTD', 'incorporated': datetime.date(2020, 5, 5)}>>> to_json(a)'{"created": "2020-05-07T13:10:05", "number": 12585493, "name": "PAARTI LTD", "incorporated": "2020-05-05"}'這對我來說是正確的。這正是我希望它顯示的方式。但是,在我的瀏覽器中測試http://127.0.0.1:8000/testrequest時,我得到以下信息:{"company":"{\"created\": \"2020-05-07T13:10:05\", \"number\": 12585493, \"name\": \"PAARTI LTD\", \"incorporated\": \"2020-05-05\"}"}我不明白為什么它試圖在網絡響應中逃避這些反斜杠。我怎樣才能解決這個問題,以獲得以下正確的 json 響應:{"company":{"created": "2020-05-07T13:10:05", "number": 12585493, "name": "PAARTI LTD", "incorporated": "2020-05-05"}}
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

import json


@app.get("/testrequest")

def test_request():

    query = SESSION.query(Company).order_by(Company.number).filter_by(name="PAARTI LTD")

    return {"company": json.loads(to_json(i) for i in query)}

只需使用 json.loads(str)


查看完整回答
反對 回復 2022-11-09
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

您可以像這樣返回 JSON:


        @router.get('/statistics')

        async def get_statistics():

            return self.json_data

對我來說,它就像一個魅力


{

    "CLIENT": [

        {

            "topics": [

                "topic"

            ],

        }

    ]

}


查看完整回答
反對 回復 2022-11-09
?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

試試這個,先構建字典,然后立即轉儲到 json。

@app.get("/testrequest") def test_request():    query = SESSION.query(Company).order_by(Company.number).filter_by(name="PAARTI LTD")    return json.dumps({"company": i.to_dict() for i in query}, default=alchemyencoder)


查看完整回答
反對 回復 2022-11-09
  • 3 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號