JSON格式合法但json.loads加载报错,如何解决?
Python加载合法JSON时遭遇未终止字符串错误
我有一份JSON数据(内容过长无法直接粘贴),读取该数据后尝试用Python加载,代码示例如下:
path = open(file_path_presented).read()) try: retval = json.load(open(path)) except Exception as e: if "File name too long" in str(e): retval = json.loads(path) # 此处加载JSON时报错
每次执行都会触发如下错误:
EXCEPTION INFORMATION: Traceback (most recent call): File "/mnt/c/Users/rando/bin/python/mt/api/api_handler.py", line 932, in get retval = json.loads(str(path)) File "/usr/lib/python2.7/json/__init__.py", line 339, in loads return _default_decoder.decode(s) File "/usr/lib/python2.7/json/decoder.py", line 364, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode obj, end = self.scan_once(s, idx) Unterminated string starting at: line 1 column 25 (char 24)
我猜测错误可能与JSON数据中未正确转义的{和}字符有关,但该问题并非每次出现。我用多个JSON校验工具及jq验证过,这份JSON格式是合法的。
已尝试的解决方法
- 将数据通过
StringIO传入json.load:from StringIO import StringIO io = StringIO(path) retval = json.load(io) - 用正则表达式修复JSON
- 使用
json.loads(path, strict=False)参数加载
但以上方法均出现相同错误,请问如何成功加载这份JSON?
内容的提问来源于stack exchange,提问作者user12969777
相关产品推荐
相关产品推荐

