我想在另一个模式(car.json)中使用通用 Json 模式(genericPattern.json)
car.json
{"$schema": "https://json-schema.org/draft/2020-12/schema#",
"$id": "https://test.com/car.schema.json",
"title": "car",
"description": "A car",
"type": "object",
"properties": {
"date": {
"$ref": "./genericPattern.json#/patterns/DatePattern"
}
}
}
genericPattern.json
"$schema": "https://json-schema.org/draft/2020-12/schema#",
"title": "GenericPatterns",
"description": "Generic Patterns",
"patterns": {
"DatePattern": {
"type": "string",
"pattern": "mypattern",
"message": {
"pattern": "Correct pattern is mypattern "
}
}
}```
I have both schema in the .war file, same directory, but I got allways this error:
错误 500:com.networknt.schema.JsonSchemaException:#/properties/date/$ref:参考 ./genericPattern.json#/patterns/DatePattern 无法解析 ``
如果我使用:“$id”:“https://test.com/car.schema.json”,我得到:
Error 500: com.networknt.schema.JsonSchemaException: java.net.UnknownHostException: test.com
谢谢!
如果您希望使用通用组件文件来维护多种类型,您可以使用
$defs
集合来定义它。
您使用的
message
会被 JSON 模式验证器忽略,这不是一个可识别的关键字。
$id
的使用还取决于您使用的验证器以及如何加载模式进行验证,无论是从文件系统、通过http还是模式注册表。这个答案考虑了 $id
属性。 https://stackoverflow.com/a/76419307/8564731
以下组合模式基于
pattern: mypattern
约束成功验证。根据您的要求调整图案。
{
"$id": "https://test.com/genericPatterns",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "GenericPatterns",
"description": "Generic Patterns",
"$defs": {
"DatePattern": {
"type": "string",
"pattern": "mypattern",
"message": {
"pattern": "Correct pattern is mypattern "
}
}
}
}
那么你可以参考一下
{
"$id": "https://test.com/car.schema.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "car",
"description": "A car",
"type": "object",
"properties": {
"date": {
"$ref": "genericPatterns#/$defs/DatePattern"
}
}
}
#false
{
date: "2020-12-12",
}
#true
{
date: "mypattern"
}