我有json数据,你可以从here下载(它太长了,无法粘贴在这里)。此数据从文件中读取并使用json.loads(str)
加载。例如:
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)
# erroring out here with the json in the link
每次加载这个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数据中含有{
和}
字符有关,这些字符没有被正确转义,因为它只是偶尔发生,而不是一直发生。我使用了多个linter,它们都说JSON是有效的JSON,还有jq
。如何加载这个json并抛出错误?
我尝试将数据以StringIO
的形式加载到json.load(io)
:
from StringIO import StringIO
io = StringIO(path)
retval = json.load(io)
以及使用正则表达式修复JSON以及使用json.loads(path, strict=False)
但是这些都产生了合理的错误
1条答案
按热度按时间iugsix8n1#
JSON数据似乎没有任何问题。
您可能没有使用将其转换为Python字典的最合适的技术。
考虑一下:
此代码运行至完成,没有任何异常
可选:
如果你不想创建一个本地文件,你可以构建一个bytearray,如下所示: