Future proof JSON schema -


is possible force known objects ("enemy" , "friend") defined while other objects allowed?

i've added last object {"type": "object"} display intended behaviour - in reality last object overrule 2 defined objects ("enemy" , "friend") causing kind of object valid schema. if remove last object, allow 2 objects nothing else.

json schema (using array faster testing):

{   "type": "array",   "items": {     "anyof": [       {"$ref": "#/definitions/friend"},       {"$ref": "#/definitions/enemy"},       {"$ref": "#/definitions/future"}     ]   },   "definitions": {      "friend": {       "type": "object",       "properties": {         "time": {"type": "string"},         "value": {"type": "number", "minimum": 100}       },       "required": ["time", "value"],       "additionalproperties": false     },      "enemy": {       "type": "object",       "properties": {         "enemy": {"type": "string"},         "color": {"type": "number"}       },       "required": ["enemy", "color"],       "additionalproperties": false     },      "future": {       "type": "object",       "properties": {         "time": {"type": "string"}       }, "required": ["time"],       "additionalproperties": true     }    } } 

example json (top 3 should ok, last 3 should not ok):

[   {"time": "123", "value": 100}, <- should valid   {"time": "1212", "value": 150}, <- should valid   {"enemy": "bla", "color": 123}, <- should valid   {"time": "1212", "value": 50}, <- should invalid bcoz of "future"   {"enemy": "bla", "color": "123"}, <- shouldn't valid bcoz of "enemy" schema   {"somethinginfuture": 123, "somefutprop": "ok"} <- should valid ] 

it's not clear want want use combination of dependencies , minproperties here. 2 forms of keyword used here: property dependency , schema dependency. want @ least 1 property defined, hence minproperties. can (note factorized common schema color; may, or may not, want):

{     "type": "object",     "minproperties": 1,     "additionalproperties": {         "type": "string" // properties not explicitly defined strings     },     "properties": {         "color": { "type": "number" }     },     "dependencies": {         "enemy": "color", // property dependency         "friend": { // schema dependency             "properties": { "color": { "minimum": 50 } },             "required": [ "color" ]         }     } } 

note schema still allows "enemy" , "friend" @ same time (so original schema). better, sample jsons want deem valid , invalid should provided.


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -