После нескольких часов поиска в Google и различных чтениях документов я наконец смог составить две json-схемы, используя "$ref" : "file:..."
.
Мой пример данных выглядит следующим образом:
john-doe.json:
{
"first_name": "john",
"last_name": "doe",
"age": 42,
"address": {
"street_address": "foo street 42",
"city": "baklavastan",
"state": "foobar"
"foo": 42
}
}
И тогда я два JSon файлы схемы, которая живет в той же директории на моей файловой системе.
customer.json
{
"type": "object",
"properties": {
"first_name": { "type": "string" },
"last_name": { "type": "string" },
"age" : { "type" : "integer" },
"address" : { "$ref" : "file:address.json#" }
},
"required": ["first_name", "last_name", "age", "address"],
"additionalProperties": false
}
address.json
{
"type": "object",
"properties": {
"street_address": { "type": "string" },
"city": { "type": "string" },
"state": { "type": "string" }
},
"required": ["street_address", "city", "state"],
"additionalProperties": false
}
Я могу подтвердить против схемы в Clojure с использованием библиотеки scjsv (который является оберткой библиотеки Java json-schema-validation)
It дает мне следующую ошибку проверки (в clojure edn) для john-doe.json
пример:
{ :level "error",
:schema {:loadingURI "file:address.json#", :pointer ""},
:instance {:pointer "/address"},
:domain "validation",
:keyword "additionalProperties",
:message
"object instance has properties which are not allowed by the schema: [\"foo\"]",
:unwanted ["foo"] }