datamodel-code-generator处理JSON复合模式文档报错求助
解决datamodel-code-generator转换带$id的JSON Schema时的ScannerError错误
针对你使用datamodel-code-generator 0.21.4转换含子模式$id的JSON Schema到Pydantic模型时出现的yaml.scanner.ScannerError: mapping values are not allowed in this context错误,以下是几个针对性的解决方向:
启用严格JSON解析
命令中添加--strict参数,强制工具以严格JSON规则解析输入,避免误触发YAML解析逻辑:datamodel-codegen --strict --input schema.json --input-file-type jsonschema --output model.py校验子模式$id的格式
检查JSON Schema中子模式的$id值,避免使用YAML解析敏感的格式(比如无空格的冒号结构)。例如:- 错误写法:
"$id": "local:user_schema" - 修正写法:
"$id": "https://your-domain.com/schemas/user"或使用完整URI格式
- 错误写法:
升级工具版本
0.21.4版本存在子模式$id解析的已知bug,升级到最新稳定版大概率能解决问题:pip install --upgrade datamodel-code-generator转格式间接处理
若以上方法无效,先将JSON Schema转换为合法YAML格式(可用yq工具),再进行模型生成:yq -o yaml schema.json > schema.yaml datamodel-codegen --input schema.yaml --input-file-type jsonschema --output model.py
内容的提问来源于stack exchange,提问作者clement boutaric
相关产品推荐
相关产品推荐

