simplejson处理不严谨JSON python json Invalid control character -zhaokuo719

一个标准、严谨的JSON应该如下:

{"title": "\u6587\u7ae0\u6807\u9898\n\u6362\u884c"}


但是在某些情况下,特别是跨语言情况下,JSON可能是这个样子:

{"title": "文章标题
换行"}

这种情况下直接使用 simplejson.loads(json) 有可能报如下错误:

raceback (most recent call last):
  File "testjson.py", line 24, in <module>
    print simplejson.loads(json)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/
site-packages/PIL/__init__.py", line 384, in loads
    
  File "build/bdist.macosx-10.5-i386/egg/simplejson/decoder.py", line 402, 
in decode
  File "build/bdist.macosx-10.5-i386/egg/simplejson/decoder.py", line 418, 
in raw_decode
simplejson.decoder.JSONDecodeError: Invalid control character at: line 1 
column 15 (char 15)

simplejson.loads() 有一个手册上没有提及的参数“strict”,这其实是 JSONDecoder 的一个构造参数,即不严格检查JSON语法。

因此,兼容非标准格式的方法即:

simplejson.loads(json, strict=False)


文章来源: http://old.zhigang.net/post/18001#

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值