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#

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章