簡體   English   中英

在python中導入多行JSON文件

[英]importing multiline JSON file in python

我正在嘗試在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文件中的所有對象作為字典返回?

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM