我需要针对JSON
中的架构验证多个Golang
文件。
我已经能够使用gojsonschema来实现它,这实际上是一个直接的库。
但是,我现在面临的问题是,我已经获得了与其他模式有依赖关系的模式,并且找不到加载我需要的所有模式的方法。因此,我的验证总是失败。
这是我的主要架构:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/List",
"definitions": {
"List": {
"type": "array",
"items": {
"$ref": "#/definitions/Item"
}
},
"Item": {
"description": "An item ....",
"type": "object",
"additionalProperties": false,
"properties": {
"property01": {
"description": "The property01 code.",
"$ref": "./CommonTypes.json#/definitions/Type01Definition"
}
},
"required": [
"property01"
]
}
}
}
而且,我有另一个常见的类型:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"definitions": {
"Type01Definition": {
"description": "The definition for the type 01",
"type": "string",
"pattern": "^[A-Z0-9]{3}$"
}
}
}
有没有办法使用该库加载多个模式?或者是否有其他Golang
库可以实现这一目标?
答案 0 :(得分:3)
使用$ref
引用文件的方法是使用URL方案指定文件的绝对路径。如果您将$ref
更改为"$ref" : "file:///home/user/directory/CommonTypes.json#/definitions/Type01Definition
,则您的示例将按预期工作。
如果您需要更多灵活性,可以尝试gojsonschema
NewReferenceLoaderFilesystem或切换到其他Golang
库https://github.com/santhosh-tekuri/jsonschema。该库允许您添加自定义资源,以便您可以一次加载多个模式。