[英]Saving multiple Json object in single file
我正在尝试为该链接的组织解析 github api第一个链接我从该链接收集了所有 commit_url,然后我需要保存每个提交链接中的数据以进行进一步清理。
例如,我有两个提交链接,即commit_link1和commit_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.