欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

python使用jsonscheme引用ref报错unknown url type: definitions.json

程序员文章站 2022-04-10 11:37:25
问题 将definitions放在当前的文档中,没有问题,放在外部文件中,根据官方文档的说明: main.py文件 definitions.json文件 解决使用file main.py文件 这里的file使用的是相对路径,相对当前运行目录。 address.json文件 json文件中不能再使用r ......

问题

将definitions放在当前的文档中,没有问题,放在外部文件中,根据官方文档的说明:
python使用jsonscheme引用ref报错unknown url type: definitions.json
main.py文件

from jsonschema import validate

a = {
    "type": "object",
    "required": ["shipping_address"],
    "properties": {
        "shipping_address": {"$ref": "definitions.json#/address"}
    }
}
ins = {"billing_address": 1, "shipping_address": 2}
validate(ins, a)

definitions.json文件

{
  "adress": {
      "type": "object",
      "properties": {
          "street_address": {"type": "string"},
          "city": {"type": "string"},
          "state": {"type": "string"}
    },
    "required": ["street_address", "city", "state"]
}
}

解决使用file

main.py文件

from jsonschema import validate

a = {
    "type": "object",
    "required": ["shipping_address"],
    "properties": {
        "shipping_address": {"$ref": "file:address.json"}
    }
}
ins = {"billing_address": 1, "shipping_address": 2}
validate(ins, a)

这里的file使用的是相对路径,相对当前运行目录。

address.json文件

{
    "type": "object",
    "properties": {
      "street_address": {"type": "string"},
      "city": {"type": "string"},
      "state": {"type": "string"}
    },
    "required": ["street_address", "city", "state"]
  }

json文件中不能再使用ref,找不到,仍然会报错找不到URL

这里需要一个definition需要写一个单独的文件,暂时没有找到多个definition写到一个json文件中的引用方法。