我正在查詢我的資料庫,然后回傳值并將它們 JSONIFY 轉換為 JSON 格式,以便“fullcalendar js”可以決議它們并在我的前端顯示它們。
我的資料庫模型如下:
class database(db.Model):
id = db.Column(db.Integer, primary_key=True)
userid = db.Column(db.Integer, nullable=False)
user = db.Column(db.String(200), nullable=False)
startdate = db.Column(db.String(10), nullable=False)
enddate = db.Column(db.String(10), nullable=False)
duration = db.Column(db.Integer, nullable=False)
approved = db.Column(db.Boolean, nullable=False)
我需要它們的 JSON 格式是:
[
{
"title": "Long Event",
"start": "2014-09-07",
"end": "2014-09-10"
}
]
我嘗試過的(“失敗了!”)
alldata = database.query.filter(database.approved == True).all()
events = {"title": [], "start": [], "end": []};
for row in alldata:
events["title"].append(row.user.strip("[]"))
events["start"].append(datetime.datetime.strptime(row.startdate,'%d/%m/%Y').strftime('%Y-%m-%d').strip("[]"))
events["end"].append(datetime.datetime.strptime(row.enddate, '%d/%m/%Y').strftime('%Y-%m-%d').strip("[]"))
# Serializing json
json_object = json.dumps(events, indent=4)
jsontoreturn="[" json_object "]"
return jsontoreturn
失敗的原因是生成的 JSON 格式為:
[{
"title": [
"Ben"
],
"start": [
"2021-12-29"
],
"end": [
"2021-12-31"
]
}]
如您所見,詞典正在添加方括號,因此 FullCalendar JS ( https://fullcalendar.io/docs/events-json-feed ) 無法正確決議并失敗。
有人有任何想法嗎?
uj5u.com熱心網友回復:
我沒有能力根據您的價值實際測驗它,alldata但我懷疑以下方法會起作用:
alldata = database.query.filter(database.approved == True).all()
def process_row(row):
# func which returns a dictionary like:
# {"title": "Long Event", "start": "2014-09-07", "end": "2014-09-10" }
return dict (title = row.user.strip("[]"),
start = datetime.datetime.strptime(row.startdate,'%d/%m/%Y').strftime('%Y-%m-%d').strip("[]"),
end = datetime.datetime.strptime(row.enddate, '%d/%m/%Y').strftime('%Y-%m-%d').strip("[]"),
)
# Make a list of dictionaries based on the input, `alldata`
events = [process_row(r) for r in alldata]
然后簡單地:
json_object = json.dumps(events, indent=4)
return json_object
或者,如果你想使用 Flask 的jsonify函式來設定Content-Type標題:
return jsonify(events)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/372063.html
標籤:Python json 烧瓶 sqlalchemy
