Python中如何为JSON指定键插入父对象并调整位置
解决方案
Python 3.7及以上版本的标准字典是插入有序的,我们可以利用这个特性实现你的需求,具体操作如下:
实现步骤
- 读取JSON文件并加载为字典
- 提取要放入
versions的pattern和baseline键值对 - 从原字典中删除这两个键
- 找到
use_it的位置,在其后方插入包含目标键值对的versions字典 - 将修改后的字典写回JSON文件
完整代码示例
import json # 读取JSON文件 with open("myfile.json", 'r') as f: myjson = json.load(f) # 提取并移除需要放入versions的键值对 versions_content = {} for key in ["pattern", "baseline"]: if key in myjson: versions_content[key] = myjson.pop(key) # 将字典转为键值对列表,方便插入操作 items = list(myjson.items()) # 定位use_it的位置,准备在其后插入 insert_pos = None for idx, (key, _) in enumerate(items): if key == "use_it": insert_pos = idx + 1 break # 插入versions键值对 if insert_pos is not None: items.insert(insert_pos, ("versions", versions_content)) # 转回字典并写回文件 modified_json = dict(items) with open("myfile.json", 'w') as f: json.dump(modified_json, f, indent=4)
代码说明
json.load()在Python3.7+环境下会保留原JSON的键顺序,无需额外处理有序字典- 使用
pop()方法同时完成提取和删除操作,避免重复遍历 - 转成键值对列表后可以精准控制插入位置,确保
versions出现在use_it之后 indent=4参数保证输出的JSON格式和你给出的示例一致
内容的提问来源于stack exchange,提问作者Bokambo
相关产品推荐
相关产品推荐

