在 python 中创建一个 JSON 文件,其中不以逗号分隔

Creating a JSON file in python, where they are not separated by commas

我想在 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}}]

区别在于,在第一个示例中,每一行都是一个字典,它们不在列表中,也不以逗号分隔。

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

很抱歉,如果这是一个愚蠢的问题,我已经为这个问题绞尽脑汁好几个星期了,而且还没有想出解决方案。

感谢任何帮助。

提前谢谢你。

您希望将数据存储在一个文件中的方式不适用于 JSON。 每个 JSOn 文件只能包含一个对象。这意味着您可以在花括号内定义一个对象,也可以像您提到的那样定义一组对象。 如果您想将每个对象存储为一个 JSON 对象,您应该使用单独的文件,每个文件包含一个对象。

正如@LaurinNiemeyer 所提到的,如果不将它们包装在列表或字典或其他受支持的数据结构中 [=17],则无法将多个分隔的 Python 字典对象存储在一个 json 文件中=] json 的内置库。但是,有一种方法可以解决此问题,它会根据需要导出文件,但请记住,即使文件具有“.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')