问题描述
common-js utils中的JSON Schema验证是否支持引用?我无法使用 https://github.com/kriszyp /commonjs-utils/blob/master/json-schema.js
Does JSON Schema validation in common-js utils support references? I can not do this with https://github.com/kriszyp/commonjs-utils/blob/master/json-schema.js
我尝试了以下代码:
{
"type" : "object",
"required" : true,
"properties" : {
"id" : {
"type" : "number",
"required" : true
},
"related" : {
"type" : "array",
"required" : true,
"items" : {"$ref": "$#"}
}
}
}
我可以继续进行我的架构的准备工作,而无需引用,但是很高兴知道是否有可能.
I can go ahead and prepare my schema with out references, but it would be nice to know if it is possible.
推荐答案
我不知道,但是您的引用似乎有误,请删除"$"符号,即:
I do not know, however your ref seems to be wrong, remove the "$" sign i.e.:
"items" : {"$ref": "#"}
这是我张贴在json论坛上的有关引用的副本粘贴帖子:
Here is a copy pasted post I put on the json forum concerning references:
根据草稿03,我了解到有关指定id并从任何地方引用它的理解.如果有什么问题请发表评论.案例写在下面:一种.从中检索架构的urib.模式得到了C.如何引用该模式
According to the draft 03 here is what I understood about specifying an id and referencing it from anywhere. Please comment if something is wrong.The cases are written in the following :a. The uri from where I retrieve the schemab. the schema gotc. how to refer to this schema
1. A schema without any "id" property
I fetch : http://someSite.com/somePath
I get : { }
I can ref it : {"$ref":"http://someSite.com/somePath#"}
2. Same absolute id and uri path
I fetch : http://someSite.com/somePath
I get : {"id":"http://someSite.com/somePath#"}
I can ref it : {"$ref":"http://someSite.com/somePath#"}
3. Different absolute id and path
I fetch : http://someSite.com/somePath
I get : {"id":"http://anotherSite.com/anotherPath#"}
I can ref it : {"$ref":"http://anotherSite.com/anotherPath#"}
4. Relative - a fragment
I fetch : http://someSite.com/somePath
I get : {"id":"#something"}
I can ref it : {"$ref":"http://someSite.com/somePath#something"}
5. Relative path and fragment
I fetch : http://someSite.com/somePath
I get : {"id":"/oneMore/path#something"}
I can ref it : {"$ref":"http://someSite.com/somePath/oneMore/path#something"}
6. Relative path from file
I fetch : file:///someFolder/someFile
I get : {"id":"/oneMore/path#something"}
I can ref it : {"$ref":"file:///someFolder/someFile/oneMore/path#something"}
7. Inner schema (sub schema) with id "#subschema" (no id for the main schema)
I fetch : http://someSite.com/somePath
I get : {"properties" : { "aKeyName" : { "id":"#subschema" }}}
I can ref it : {"$ref":"http://someSite.com/somePath#subschema"}
8. Inner schema (sub schema) with id "#subschema"
I fetch : http://someSite.com/somePath
I get : { {"id":"#mainSchema"}, "properties" : { "aKeyName" : { "id":"#subschema" }} }
I can ref it : {"$ref":"http://someSite.com/somePath#subschema"}
I can also do: {"$ref":"http://someSite.com/somePath#mainSchema/properties/aKeyName"}
9. Inner schema (within the property under the "aKeyName") but no id at all
I fetch : http://someSite.com/somePath
I get : { "properties" : { "aKeyName" : { }} }
can ref it: {"$ref":"http://someSite.com/somePath#/properties/aKeyName"}
10. Inner schema (sub schema) with a main custom absolute uri"
I fetch : http://someSite.com/somePath
I get : { {"id":"scheme://something"}, "properties" : { "aKeyName" : { "id":"#subschema" }} }
I can ref it : {"$ref":"scheme://something#subschema"}
I can also do: {"$ref":"scheme://something#/properties/aKeyName"}
11. Inner schema with it's own absolute uri"
I fetch : http://someSite.com/somePath
I get : { {"id":"#main"}, "properties" : { "aKeyName" : { "id":"http://domain.com/subSchema" }} }
I can ref it : {"$ref":"http://domain.com/subSchema#"}
这篇关于common-js utils中的JSON Schema验证是否支持引用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!