JSON初学者求助:如何用Python生成含动态用户与优先级的重复JSON
解决JSON重复生成的Python实现方案
需求说明
现有file-1.json,内容为:
{"Aps": [{"type": "opo","price_min": 7,"price_max":10,"app_time": 0,"arguments": {"prices": 15,"apps_num": "112"},"attributes": {"name":"user1","priority":"100"}}]}
需要生成新的JSON文件,将原始条目重复100次,其中用户名称依次为user1到user100,优先级对应变更(示例中user2对应90,user1对应100)。
原代码问题
你之前的代码存在以下问题:
- 未读取原始JSON文件,
json_object变量未定义 - 循环内每次用
"w"模式打开文件,会覆盖已有内容,无法累积条目 - 未实现
name和priority字段的修改逻辑
正确实现代码
import json # 读取原始JSON文件 with open("file-1.json", "r") as infile: original_data = json.load(infile) # 获取原始条目模板 original_item = original_data["Aps"][0] # 初始化新的Aps数组,先放入user1的原始条目 new_aps_list = [original_item] # 生成user2到user100的条目 for user_num in range(2, 101): # 复制模板条目(浅拷贝),避免修改原模板 new_item = original_item.copy() # 嵌套的attributes字典需要单独复制,防止引用同一对象 new_item["attributes"] = original_item["attributes"].copy() # 设置新的用户名 new_item["attributes"]["name"] = f"user{user_num}" # 设置优先级,按示例逻辑从100递减,每次减10,可按需调整 new_item["attributes"]["priority"] = str(100 - 10 * (user_num - 1)) # 添加到数组中 new_aps_list.append(new_item) # 构建最终的JSON结构 final_result = {"Aps": new_aps_list} # 写入目标文件,indent参数用于格式化输出,方便阅读 with open("sample.json", "w") as outfile: json.dump(final_result, outfile, indent=4)
关键说明
- JSON读写:用
json.load读取原始文件为Python字典,json.dump将最终字典写入目标文件 - 条目复制:因为字典是引用类型,需要用
copy()复制条目,嵌套的attributes字典要单独复制,避免所有条目共享同一对象 - 字段修改:通过循环变量生成用户名,优先级逻辑可根据需求调整(比如要从100到1,改为
str(101 - user_num)即可) - 文件写入:先构建完整的条目数组,再一次性写入文件,避免循环内覆盖内容
内容的提问来源于stack exchange,提问作者jojo
相关产品推荐
相关产品推荐

