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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:02:50