如何在Json Schema中为$ref使用相对路径

n53p2ov0  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(216)

假设我有一个名为child.json的json模式。
“$ref”:“文件:子级.json”将起作用
“$ref”:“文件:./child.json”将起作用
这是唯一两个对我有效的相对路径。我使用的是python验证器:http://sacharya.com/validating-json-using-python-jsonschema/
我的问题是:如果我有3个模式:祖父json、父json和子json;爷爷正在使用“$ref”指代父母:“文件:parent.json,并且父级正在使用“$ref”引用子级:“file:child.json,那么上面的相对路径就不起作用了

jvlzgdj9

jvlzgdj91#

在由@jruizaranguren链接的github issue的基础上,我得到了如下代码,它按预期工作:

import os
import json
import jsonschema

schema_dir = os.path.abspath('resources')
with open(os.path.join(schema_dir, 'schema.json')) as file_object:
    schema = json.load(file_object)

# Your data
data = {"sample": "woo!"}

# Note that the second parameter does nothing.
resolver = jsonschema.RefResolver('file://' + schema_dir + '/', None)

# This will find the correct validator and instantiate it using the resolver.
# Requires that your schema contains a line like this: "$schema": "http://json-schema.org/draft-04/schema#"
jsonschema.validate(data, schema, resolver=resolver)

相关问题