datamodel-code-generator 无法处理 JSON 复合架构文档

问题描述 投票:0回答:1

我正在尝试使用 datamodel-code-generator 将 JSON Schema 转换为 pydantic 模型。该模式是一个复合模式文档,这意味着

$id
用于子模式中。它会导致与 yaml.scanner 相关的问题。

我正在使用: 数据模型代码生成器 0.21.4 派丹克2.3.0 蟒蛇 3.11.14

我尝试在以下模式上使用数据模型,可以在那里找到:(https://json-schema.org/understanding-json-schema/structuring.html#retrieval-uri)

{
  "$id": "https://example.com/schemas/customer",
  "$schema": "https://json-schema.org/draft/2020-12/schema",

  "type": "object",
  "properties": {
    "first_name": { "type": "string" },
    "last_name": { "type": "string" },
    "shipping_address": { "$ref": "/schemas/address" },
    "billing_address": { "$ref": "/schemas/address" }
  },
  "required": ["first_name", "last_name", "shipping_address", "billing_address"],

  "$defs": {
    "address": {
      "$id": "/schemas/address",
      "$schema": "http://json-schema.org/draft-07/schema#",

      "type": "object",
      "properties": {
        "street_address": { "type": "string" },
        "city": { "type": "string" },
        "state": { "$ref": "#/definitions/state" }
      },
      "required": ["street_address", "city", "state"],

      "definitions": {
        "state": { "enum": ["CA", "NY", "... etc ..."] }
      }
    }
  }
}```

我在 CLI 上运行

datamodel-codegen  --input schema.json --input-file-type jsonschema --output model.py

我期待着一个 pydantic 模型的产生。

我收到以下错误消息:

yaml.scanner.ScannerError: mapping values are not allowed in this context
  in "<unicode string>", line 11, column 25

这里也出现了类似的问题: 文字 然而找到的解决方案似乎不适用于我的情况。

有人知道发生了什么事吗?我将不胜感激任何帮助。

code-generation jsonschema pydantic
1个回答
0
投票

OP确实按照问题评论中的建议为此提出了问题:https://github.com/koxudaxi/datamodel-code-generator/issues/1541

根据该问题的 GitHub 历史记录,该问题已在 data-model-generator 0.23.0 版本中得到解决

© www.soinside.com 2019 - 2024. All rights reserved.