Python flask解析字段名不带双引号的JSON字符串的问题

鸣鸣Amadues 2017-09-01 06:16:29
比如{aaa:"111", bbb: "222"}
这样的,字段名没有双引号,解析出错了,有方法解决吗?
因为某些原因,我post过去的JSON字符串只能是字段名不带双引号的。
...全文
498 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddcrzhe 2019-01-17
  • 打赏
  • 举报
回复
使用demjson来处理即可
demjson.decode(string)
鸣鸣Amadues 2017-09-07
  • 打赏
  • 举报
回复
嗯,我还是加上双引号吧。
混沌鳄鱼 2017-09-02
  • 打赏
  • 举报
回复
理论上说字段名不带引号的就是不JSON对象字符串了,因为不符合JSON标准, 只能当成特殊格式字符串来处理。 按开发者的道义来讲你不应当这么POST。 这种非法串实际上是非常难处理的,如果格式只是你这个例子这么简易的,而且也不会有太多变种。倒是可以用正则替换的方法,使其标准化。

>>> import re
>>> invalid_json = '{aaa:"111", bbb: "222"}'
>>> print re.sub(r'(?!={|, )(\w*):', r'"\1":', invalid_json)
{"aaa":"111", "bbb": "222"}
>>> 
必须要说明的是上面这个简易的办法不是十分的靠谱,因为正常的字符串数据中有可能有“:” 或{,之类的,这样会有异常情况。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧