2011-12-21 15 views
7

¿La validación del esquema JSON en common-js utils admite referencias? No puedo hacer esto con https://github.com/kriszyp/commonjs-utils/blob/master/json-schema.js¿La validación del esquema JSON en common-js utils admite referencias?

Probé siguiente código:

{ 
    "type" : "object", 
    "required" : true, 
    "properties" : { 
    "id" : { 
     "type" : "number", 
     "required" : true 
    }, 
    "related" : { 
     "type" : "array", 
     "required" : true, 
     "items" : {"$ref": "$#"} 
    } 
    } 
} 

puedo seguir adelante y preparar mi esquema con las referencias, pero sería bueno saber si es posible.

Respuesta

19

No sé, sin embargo su referencia parece estar mal, eliminar el "$" firmar es decir:

"items" : {"$ref": "#"} 

Aquí está una copia pegada post que puse en el foro JSON relativo a las referencias:

De acuerdo con el borrador 03, aquí está lo que entendí acerca de especificar una identificación y hacer referencia a ella desde cualquier lugar. Por favor comente si algo está mal. Los casos están escritos de la siguiente manera: a. El uri desde donde recupero el esquema b. el esquema obtuvo c. cómo hacer referencia a este esquema

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#"} 
Cuestiones relacionadas