如何不使用外部库拆分大型JSON对象为分片存入数据库
解决方案
实现思路
你的需求可以直接用Python内置的标准库完成,无需引入任何第三方依赖,核心逻辑如下:
- 用Python内置的
json模块读取源JSON文件,将顶层数组转换为Python列表 - 按照你预设的单分片容量对列表做切片拆分
- 将每个切片单独序列化为JSON格式写入独立文件,通过缩进参数匹配你需要的格式化输出效果
可直接运行的代码
import json # 可按需修改的配置项 INPUT_FILE = "input.json" # 源JSON文件路径 PER_CHUNK_COUNT = 3 # 每个分片包含的对象数量 OUTPUT_NAME_TPL = "chunk_{}.json" # 分片文件命名模板 if __name__ == "__main__": # 加载源JSON数据 with open(INPUT_FILE, "r", encoding="utf-8") as f: full_data = json.load(f) if not isinstance(full_data, list): raise TypeError("源JSON的顶层结构必须为数组,和你提供的示例结构一致") # 分片写入 total = len(full_data) for idx, start_pos in enumerate(range(0, total, PER_CHUNK_COUNT)): end_pos = start_pos + PER_CHUNK_COUNT current_chunk = full_data[start_pos:end_pos] # 生成分片文件 output_path = OUTPUT_NAME_TPL.format(idx) with open(output_path, "w", encoding="utf-8") as f: # indent=4 控制输出缩进,和你要求的分片格式完全匹配 json.dump(current_chunk, f, indent=4, ensure_ascii=False) print(f"完成生成分片 {output_path},包含{len(current_chunk)}条数据")
使用说明
- 将你需要拆分的源JSON文件重命名为
input.json,和上述脚本放在同一个文件夹下 - 修改代码里的
PER_CHUNK_COUNT参数为你想要的每个分片的对象数量,比如需要每个分片存100条就设置为100 - 直接运行脚本即可,生成的分片文件会按序号自动命名,全部为符合JSON规范的数组格式,和你给出的示例分片结构完全一致
2万条数据属于很小的体量,上述代码运行不会有任何内存问题,耗时也基本在1秒以内就能完成。
内容的提问来源于stack exchange,提问作者John Miller
相关产品推荐
相关产品推荐

