Python用转义的双引号解析JSON

Bil*_*lga 6 python encoding json

考虑这个有效的json:

{"a": 1, "b": "{\"c\":2}"}

json当我尝试解析它时,Python 的模块抛出 - 看起来\"它正在抛出它:

json.loads('{"a": 1, "b": "{\"c\":2}"}')
回溯(最近一次调用最后一次):
  文件“”,第 1 行,在 
  文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py”,第 338 行,加载中
    返回 _default_decoder.decode(s)
  文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第 365 行,解码
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py”,第 381 行,raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting , delimiter: line 1 column 15 (char 14)

有没有办法在 Python 中解析这个,要么使用json模块,要么使用其他模块,比如ujson

Kev*_*uan 4

实际上,转义双引号并不重要。看我的测试:

>>> json.loads('{"a": 1, "b": "{\"c\":2}"}')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.4/json/decoder.py", line 343, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.4/json/decoder.py", line 359, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting ',' delimiter: line 1 column 18 (char 17)

>>> json.loads('{"a": 1, "b": "{"c":2}"}')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python3.4/json/__init__.py", line 318, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.4/json/decoder.py", line 343, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.4/json/decoder.py", line 359, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting ',' delimiter: line 1 column 18 (char 17)

>>> json.loads('{"a": 1, "b": {"c":2}}')
{'a': 1, 'b': {'c': 2}}

>>> json.loads('{"a": 1, "b": {\"c\":2}}')
{'a': 1, 'b': {'c': 2}}

>>> 
Run Code Online (Sandbox Code Playgroud)