读取存储在单个文件中的多个json对象

时间:2019-01-13 11:06:08

标签: json

我在单个文件 file.txt

中存储了多个json对象
{"article": "....", "title": "...."}{"article": "....", "title": "...."}

我将以下代码用于 dumping json对象

import json 

data = {}
data['title'] = '....'
data['article'] = '....'

data_2 = {}
data_2['title'] = '.....'
data_2['article'] = '.....'

with open('file.txt', 'w') as file:
    json.dump(data , file, ensure_ascii=False)
    json.dump(data , file, ensure_ascii=False)

我使用for循环

我尝试读取这些对象,但是出现以下错误

ValueError: Extra data: line 1 column 10329 - line 1 column 295676 (char 10328 - 295675)

然后我将每个对象存储在不同的行

{"article": "....", "title": "...."}
{"article": "....", "title": "...."}

这导致了另一个错误

AttributeError: 'str' object has no attribute 'read'

我以这种方式存储了大约4k个对象,因此将它们存储在单独的字典中也不可行

(在类似问题上建议的一种方法)

对此表示感谢

1 个答案:

答案 0 :(得分:2)

一个JSON文件应仅包含一个JSON才能起作用。在您的情况下,您可以将所有这些字典包装在单个列表中,并将其输出为单个JSON:

import json 

lst = []

data = {}
data['title'] = '....'
data['article'] = '....'
lst.append(data)

data_2 = {}
data_2['title'] = '.....'
data_2['article'] = '.....'
lst.append(data_2)

with open('file.txt', 'w') as file:
    json.dump(lst, file, ensure_ascii=False)

从该JSON文件读取时,您将获得包含已放入其中的所有字典的列表。