首页 > 解决方案 > 读取存储在单个文件中的多个 json 对象

问题描述

我已将多个 json 对象存储在单个文件file.txt中

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

我使用以下代码转储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 个对象,因此将它们存储在单独的字典中也是不可行的

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

对此的任何意见将不胜感激

标签: json

解决方案


一个 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 文件中读取时,您将获得包含您放入其中的所有 dicts 的列表。


推荐阅读