繁体   English   中英

"将多个 Json 对象保存在单个文件中"

[英]Saving multiple Json object in single file

我正在尝试为该链接的组织解析 github api第一个链接我从该链接收集了所有 commit_url,然后我需要保存每个提交链接中的数据以进行进一步清理。

例如,我有两个提交链接,即commit_link1commit_link2

由于两个链接中的数据再次是 JSON 对象,我尝试使用附加模式将数据保存在 JSON 文件中,但是当我打开文件以获取数据时,我得到了 keyerror: extra data

任何想法如何将数据保存在单个文件中作为 CSV 选项看起来都不合理。

JSON文件中的顶级项目必须是单个值,例如单个对象(Python中的dict )或单个列表。 因此,您不能简单地在一个文件中附加两个JSON对象。

您可以将所有这些对象收集在一个列表中,然后存储该列表,或者可以使用JSON Lines文件格式,该格式由多个JSON值(例如,对象)组成,并以换行符分隔。 但是请注意,“标准” JSON工具将不知道如何处理JSON行。 对于Python,您可以使用jsonlines库。

对于任何关注这个老问题的人:JSON-lines 是一个不错的选择。 它的json,但每一行都是一个json(即json用'\\n'分隔)

保存:

(*.jsonl 是 json 行的典型文件扩展名)

import json

file_name = "data.jsonl"  # your desired file name  
list_objs = []  # the list of objects you want to save as json

# convert object to strings
text = "\n".join([json.dumps(json_) for json_ in list_objs])

# save
with open(file_name, "w", encoding='utf-8') as f:
    f.write(text)

加载:

import json

file_path = "#####.jsonl"  # your file path

data = []
with open(file_path, "r", encoding='utf-8') as f:
    for line in f:
        data.append(json.loads(line))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM