昨天寫了一個bug改了一天沒改出來,今天接著寫,腦袋頂上突然就冒了電燈泡,
流程如下:
1. 從資料庫取出一個標準json字串:
{"1": { "RD": null, "length": 90.0, "extend_reason": "ffff", "pass": false, "operator": "ou_89bf143e43", "solve_time": null, "iter": 1, "extend_time": "2020-07-09 03:18:46"}}
2. json.loads 變成Python Dict, 然后其中增加如下欄位:
"has_executed": true
3. 把加完了的Json存回資料庫,
4. 再次取用該Json時,報錯 JSON ValueError: Expecting property name: line 1 column 2 (char 1)
此時查看字串,變成了
{u"1":{u"has_executed":true,u"RD":null,u"length":90,u"extend_reason":u"ffff",u"pass":false,u"operator":u"ou_892bcc3d74cdcb2e8cf4a7c4bf143e43",u"solve_time":null,u"iter":1,u"extend_time":u"2020-07-09 03:18:46"}}
可見所有的string前面都多了unicode標示,同時在資料庫中存下來的內容也變成了這樣,
百思不得其解,不得已滾回家睡覺,
早晨醒過來想起來了自己的錯誤:
json.loads()以后,一個標準Json字串被轉換成了Python Dict,添加內容后我沒有使用json.dumps()將其轉換回標準Json字串,就直接執行了寫資料庫,于是乎Python Dict被強制轉換成string,帶著u‘’標記存入了資料庫,這個原本標準的json也就變了樣子,
早晨加了一句dumps在存資料庫,Bug解決了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/91833.html
標籤:Python
