如何在JSON文档中复用已定义的结构(如basic_defense)?
解决JSON配置文件复用模板的实用方法
原生JSON本身不支持模板引用或宏功能,所以你需要通过预处理的方式,把标记替换成实际的模板内容,再给游戏使用。下面是几个适合非程序员的简单方案:
方法一:文本编辑器批量替换(零门槛)
这是最容易上手的方式,几乎所有文本编辑器都支持:
- 先把你的
basic_defense模板单独整理好,比如:
[ { "unit": "laser_tower_v1", "priority": "high", "how_many": 4 }, { "unit": "anti_air_v1", "priority": "low", "condition": { "air": true } } ]
- 在你的配置文件里,继续用
"templates.basic_defense"作为标记占位 - 打开编辑器的查找替换功能(比如VS Code按
Ctrl+Shift+H,Notepad++按Ctrl+H) - 查找内容填
"templates.basic_defense",替换内容粘贴上面的模板代码 - 点击「全部替换」,就能得到所有引用都替换完成的完整JSON配置
方法二:用极简Python脚本自动生成(一次设置永久复用)
如果你需要频繁更新模板,这个方法更高效,不用每次手动替换:
- 先安装Python(官网下载对应系统的安装包,一路点下一步即可完成安装)
- 新建一个文本文件,把下面的代码复制进去,然后把文件名改成
generate_defenses.py
# 定义你的防御模板 basic_defense = [ { "unit": "laser_tower_v1", "priority": "high", "how_many": 4 }, { "unit": "anti_air_v1", "priority": "low", "condition": { "air": True } } ] # 定义你的建筑配置(用标记占位) config = { "buildings": { "basic_vehicle_factory_v1": { "defenses": "templates.basic_defense", "priority": "high" }, "basic_aircraft_factory_v1": { "defenses": "templates.basic_defense", "priority": "medium" }, "basic_naval_factory_v1": { "defenses": "templates.basic_defense", "priority": "medium" } } } # 自动替换标记 for building in config["buildings"].values(): if building["defenses"] == "templates.basic_defense": building["defenses"] = basic_defense # 输出最终的JSON import json print(json.dumps(config, indent=2))
- 双击运行这个脚本,或者打开命令行进入文件所在目录,输入
python generate_defenses.py - 把输出的内容复制出来,保存成游戏需要的配置文件即可
之后如果要修改模板,只需要修改脚本里的basic_defense部分,重新运行就能生成新的配置。
内容的提问来源于stack exchange,提问作者user22900376
相关产品推荐
相关产品推荐

