我有一个JSON模式文件:
{
"id":"http://schema.acme.com/user",
"$schema":"http://json-schema.org/draft-06/schema#",
"definitions":{
"user":{
"description":"The name the user has selected",
"type":"object",
"required":[
"username",
"premium"
],
"properties":{
"username":{
"type":"string",
"maxLength":10,
"minLength":1
},
"premium":{
"type":"boolean"
}
}
}
}
}
我希望针对json对象验证这一点。所以我使用这个模式创建了该类型的临时对象:
{
"id":"http://schema.acme.com/uName",
"$schema":"http://json-schema.org/draft-06/schema#",
"properties":{
"uName":{
"$ref":"smUserSchema.json#/definitions/user"
}
},
"required":[
"uName"
]
}
我有这个JSON数据文件:
{
"uName":{
"username":"Bob",
"premium":true
}
}
这里的目标是不将我的临时对象嵌入到我的JSON模式中用于类类型。 (是的,我的一个问题是我试图将OO技术用于JSON。这是真的,我只是为了重复使用和继承的原因,可能会一种更好的方式。)
当我去验证这个时,我收到了这个错误:
$ ajv -s uNameSchema.json -d validUser.json
schema uNameSchema.json is invalid
error: can't resolve reference smUserSchema.json#/definitions/user from id http://schema.acme.com/uName#
如何在另一个架构中包含JSON架构?
另见:
答案 0 :(得分:2)
您需要确保ajv知道smUserSchema.json
,它不会自动找到它。有一个命令行选项来传递依赖模式,但我无法回想起它。 ajv --help应该告诉你(我没有随时可用)。