读取JSON时出错:无法解码JSON对象

时间:2018-03-04 05:29:30

标签: python json glob

我正在使用glob读取一组JSON文件并将它们存储在列表中。列表的长度是1046.当我逐个读取JSON文件并加载它以运行更多代码时,它只运行595个文件并出现以下错误:

N

我正在加载像这样的json文件:

Traceback (most recent call last):
File "removeDeleted.py", line 38, in <module>
d = json.load(open(fn))
File "/usr/lib/python2.7/json/__init__.py", line 291, in load
**kw)
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 382, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

有人可以建议我摆脱这个错误吗?

2 个答案:

答案 0 :(得分:1)

正如Blender所说,您需要找出哪些文件包含无效的JSON。为此,您需要在代码中添加一些调试语句:

json_file_names = sorted(glob.glob("./Intel_Shared_Data/gtFine/train/*/*.json")) 
  for fn in json_file_names:
   #print fn
   #temp = temp + 1
   #count = 0
   try:
       d = json.load(open(fn))
       objects = d["objects"]
       for j in range(len(objects)):
   except ValueError as e:
       print "Could not load {}, invalid JSON".format({})

答案 1 :(得分:0)

您的一个json文本文件为空。也许首先看看你是否有任何零大小的文件

find . -size 0

从终端中的json文件目录运行。