How would you design JSON Schema for an arbitrary key?
json, jsonschema
Solution
On json-schema.org you will find something appropriate in the File System Example section. You can define `patternProperties` inside an `object`.
{
"type": "object",
"properties": {
"/": {}
},
"patternProperties": {
"^(label_name_[0-9]+)+$": { "type": "integer" }
},
"additionalProperties": false,
}
The regular expression `(label_name_[0-9]+)+` should fit your needs. In JSON Schema regular expressions are explicitly anchored with `^` and `$`. The regular expressions defines, that there has to be at least one property (`+`). The property consists of `label_name_` and a number between `0` and `9` whereas there has to be at least one number `([0-9]+)`, but there can also arbitrary many of them.
By setting `additionalProperties` to `false` it constrains object properties to match the regular expression.
Problem
I have the following JSON output data: ``` { "label_name_0" : 0, "label_name_5" : 3, . . . "label_name_XXX" : 4 } ``` The output is simple: a key[1] name associated with integer value. If the key name doesn't change, I can easily come up with JSON Schema similar to this: ``` { "type": "array" "title": "Data output", "items" :{ "properties": { "label_name": { "type": "integer", "default": 0, "readonly": True, } } }, ``` Since the key name itself is not known and keep changing, I have to design schema for it. The only thing I know is that the key is `string` and not more than 100 characters. How do I define a JSON Schema for the key `lable_name_xxx` that keeps changing. [1] Not sure if I am using the right terminology