JSON Schema with unknown property names
Use patternProperties
instead of properties
. In the example below, the pattern match regex .*
accepts any property name and I am allowing types of string
or null
only by using "additionalProperties": false
.
"patternProperties": { "^.*$": { "anyOf": [ {"type": "string"}, {"type": "null"} ] } }, "additionalProperties": false
You can make constraints on properties not explicitly defined. The following schema enforces "meta" to be an array of objects whose properties are of type string:
{ "properties" : { "meta" : { "type" : "array", "items" : { "type" : "object", "additionalProperties" : { "type" : "string" } } } }}
In case you just want to have an array of strings, you may use the following schema:
{ "properties" : { "meta" : { "type" : "array", "items" : { "type" : "string" } } }}
The Solution of @jruizaranguren works for me. Though I am the same who defines the schema, i choosed another solution
"meta": { "type": "array", "items": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" } } } } }
I converted the object to an array of name-value objectsAn example of a valid JSON:
"meta": [ [ { "name": "http-equiv", "value": "Content-Type" }, { "name": "content", "value": "text/html; charset=UTF-8" } ], [ { "name": "name", "value": "author" }, { "name": "content", "value": "Astrid Florence Cassing" } ] ]