如何通过XSDATA CLI批量处理JSON生成含全参数的Model类?
解决XSDATA合并多个JSON生成单一Model类的问题
问题原因
XSDATA CLI默认不支持直接合并多个JSON文件生成单一数据模型——它会为每个输入文件生成独立的模型类,或覆盖之前的输出。你尝试的批量命令报错,是因为CLI参数解析不支持多JSON文件合并的场景,导致识别到多余参数。
可行解决方案
方案1:手动合并JSON示例字段
- 新建一个
combined.json文件,将所有目标JSON文件中的所有字段整合到这个文件里(包含所有可能出现的键,值用示例数据填充即可)。
示例:{ "name": "示例名称", "age": 25, "email": "example@test.com", "address": "示例地址" } - 用这个合并后的文件生成模型:
xsdata combined.json --output dataclasses --package models
方案2:自动合并JSON结构(Python脚本)
如果JSON文件数量多,可通过脚本自动提取所有字段:
import json import os # 初始化合并后的字段字典 combined_fields = {} input_dir = "input" # 遍历input目录下所有JSON文件 for file_name in os.listdir(input_dir): if file_name.endswith(".json"): file_path = os.path.join(input_dir, file_name) with open(file_path, "r", encoding="utf-8") as f: json_data = json.load(f) # 合并所有字段(重复字段保留最后一个值,但字段名会被保留) combined_fields.update(json_data) # 保存合并后的JSON文件 with open("combined.json", "w", encoding="utf-8") as f: json.dump(combined_fields, f, indent=2)
运行脚本生成combined.json后,再执行方案1中的xsdata命令即可。
方案3:通过JSON Schema合并
- 先将每个JSON文件转换成JSON Schema:
xsdata input/file1.json --output schema --package schemas xsdata input/file2.json --output schema --package schemas - 手动合并生成的Schema文件,将所有
properties字段整合到一个Schema的properties节点中。 - 用合并后的Schema文件生成模型:
xsdata combined_schema.json --output dataclasses --package models
内容的提问来源于stack exchange,提问作者Ayush Singh
相关产品推荐
相关产品推荐

