0

我正在寻找在 python 中创建以下 JSON 文件。我不明白如何拥有多个不以逗号分隔的字典,因此当我使用 JSON 库将字典保存到磁盘时,我得到以下 JSON;

{"text": "Terrible customer service.", "labels": ["negative"], "meta": {"wikiPageID": 1}}

{"text": "Really great transaction.", "labels": ["positive"], "meta": {"wikiPageID": 2}}

{"text": "Great price.", "labels": ["positive"], "meta": {"wikiPageID": 3}}

而不是像下面这样的字典列表;

[{"text": "Terrible customer service.", "labels": ["negative"], "meta": {"wikiPageID": 1}},

{"text": "Really great transaction.", "labels": ["positive"], "meta": {"wikiPageID": 2}},

{"text": "Great price.", "labels": ["positive"], "meta": {"wikiPageID": 3}}]

不同之处在于,在第一个示例中,每一行都是一个字典,它们不在列表中或用逗号分隔。

而在第二个例子中,我能想出的是一个字典列表,每个字典用逗号分隔。

如果这是一个愚蠢的问题,我很抱歉,我已经为此烦恼了好几个星期,并且无法提出解决方案。

任何帮助表示赞赏。

并提前感谢您。

4

2 回答 2

1

正如@LaurinNiemeyer 提到的,没有办法将多个单独的 Python 字典对象存储在一个 json 文件中,而无需通过 Python 内置库将它们包装在列表或字典或其他支持的数据结构中。但是,有一种解决方法,它会根据需要导出文件,但请记住,即使文件具有“.json”扩展名,这种格式也不符合 json 格式!
假设您有以下要导出的字典对象:

dict1 = {"text": "Terrible customer service.", "labels": ["negative"], "meta": {"wikiPageID": 1}}
dict2 = {"text": "Really great transaction.", "labels": ["positive"], "meta": {"wikiPageID": 2}}
dict3 = {"text": "Great price.", "labels": ["positive"], "meta": {"wikiPageID": 3}}

要导出上述字典对象,您只需执行以下操作:

objs_to_export = [dict1, dict2, dict3]
with open("json_file.json", "a") as out_file:
for obj in objs_to_export:    
    json.dump(obj, out_file)
    out_file.write('\n')
于 2020-12-31T16:03:36.457 回答
0

JSON 无法实现将数据存储在一个文件中的方式。每个 JSOn 文件只能包含一个 Object。这意味着您可以在花括号中定义一个对象,也可以像您提到的那样定义一个对象数组。如果要将每个对象存储为 JSON 对象,则应使用单独的文件,每个文件都包含一个对象。

于 2020-12-31T13:37:00.997 回答