You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

关键说明

  1. JSON读写:用json.load读取原始文件为Python字典,json.dump将最终字典写入目标文件
  2. 条目复制:因为字典是引用类型,需要用copy()复制条目,嵌套的attributes字典要单独复制,避免所有条目共享同一对象
  3. 字段修改:通过循环变量生成用户名,优先级逻辑可根据需求调整(比如要从100到1,改为str(101 - user_num)即可)
  4. 文件写入:先构建完整的条目数组,再一次性写入文件,避免循环内覆盖内容

内容的提问来源于stack exchange,提问作者jojo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:15:35