我有一个类似于这个问题的问题,除了我想做的就是获取外部引用并内联它们。
例如,假设我有一个像这样的模式:
{
"$defs": {
"JSONSchema": {
"$ref": "https://json-schema.org/draft/2020-12/schema"
}
},
"properties": {
"config_1_jsonschema": {
"$ref": "#/$defs/JSONSchema"
},
"config_2_jsonschema": {
"$ref": "#/$defs/JSONSchema"
}
}
}
我有两个引用
JSONSchema
定义的字段,该定义又引用 JSONSchema 元模式的 URL。我想取消引用 URL,内联该架构,并递归内联其所有外部引用,但不内联两个属性的本地引用。
如何在保持架构有效的同时解决这个问题? Python 中是否有现有的库可以让我做到这一点?
如果满足一些条件,您可以安全地将外部模式的内容复制到您的模式中。
$id
关键字。$schema
),则外部模式必须具有 $schema
关键字。就你而言,唯一棘手的部分是最后一部分
{
"$defs": {
"JSONSchema": {
"$ref": "https://json-schema.org/draft/2020-12/schema"
},
"draft-2020-12-schema": {
"$id": "https://json-schema.org/draft/2020-12/schema",
"$schema": "https://json-schema.org/draft/2020-12/schema",
...
"allOf": [
{ "$ref": "meta/core" },
{ "$ref": "meta/applicator" },
{ "$ref": "meta/unevaluated" },
{ "$ref": "meta/validation" },
{ "$ref": "meta/meta-data" },
{ "$ref": "meta/format-annotation" },
{ "$ref": "meta/content" }
],
...
},
"draft-2020-12-core-vocab": {
"$id": "https://json-schema.org/draft/2020-12/meta/core",
"$schema": "https://json-schema.org/draft/2020-12/schema",
...
},
"draft-2020-12-applicator-vocab": { ... },
...
},
"properties": {
"config_1_jsonschema": {
"$ref": "#/$defs/JSONSchema"
},
"config_2_jsonschema": {
"$ref": "#/$defs/JSONSchema"
}
}
}