Bug处理一则:Python中的Json和Unicode的恩怨情仇

   日期:2024-01-17     浏览:49    评论:0    

昨天写了一个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解决了。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服