我正在尝试在python中导入一个JSON文件,其中包含许多对象,如下所示:
{"ID": 1989, "Attrib1": "74574d4c6", "Attrib2": null, "Attrib3": "41324" }
{"ID": 1990, "Attrib1": "1652857c6", "Attrib2": asd123, "Attrib3": "424" }
该文件的每个对象都有换行符,因此json.load(file)
在第一个换行符处失败。
我尝试使用以下方法遍历它们:
with open(myFileLocation,'r') as myfile:
for line in myfile:
Data = json.loads(row)
return Data
但是我无法将每行添加到字典对象中,因为它没有添加(或其他任何知道的方法)。
如何将JSON文件中的所有对象作为字典返回?
答案 0 :(得分:0)
json.loads(和json.load)不会解码多个json对象。
>>>json.loads('{}')
{}
>>>json.loads('{}{}')
JSONDecodeError Traceback (most
recent call last)
<ipython-input-7-0285b42a3a05> in <module>()
----> 1 json.loads('{}{}')
~\AppData\Local\Continuum\anaconda3\lib\json\__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
352 parse_int is None and parse_float is None and
353 parse_constant is None and object_pairs_hook
is None and not kw):
--> 354 return _default_decoder.decode(s)
355 if cls is None:
356 cls = JSONDecoder
~\AppData\Local\Continuum\anaconda3\lib\json\decoder.py in decode(self, s, _w)
340 end = _w(s, end).end()
341 if end != len(s):
--> 342 raise JSONDecodeError("Extra data", s, end)
343 return obj
344
JSONDecodeError: Extra data: line 1 column 3 (char 2)
要转储多个词典,可以通过转储列表将它们包装在列表中。
>>> dict1 = {}
>>> dict2 = {}
>>> json.dumps([dict1, dict2])
'[{}, {}]'
>>> json.loads(json.dumps([dict1, dict2]))
[{}, {}]
还可以按如下所示使用附加
list = []
for line in open('data.json'), 'r'):
list.append(json.loads(line)