Как сделать ключ объекта обязательным в JSON Схема черновика-4? - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь определить схему json для:

{
   "user_id" :{
             "default" : ["a","b","c"]
             "unknown_key1" : ["xyz","def","ekj"]
             "unknown_key2" : []
             }
}

Ключ "default" должен всегда присутствовать в карте user_id. Остальные ключи неизвестны и могут быть любым числом. Не могли бы вы помочь определить схему JSON для этого?

Я определил схему:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "$id$",
  "description": "-1",
  "definitions": {
    "user_id": {
      "type": "object",
      "minProperties": 1,
      "patternProperties": {
        "^[A-Za-z0-9]+": {
          "type": "string",
          "pattern": "^[A-Za-z0-9]+$"
        }
      },
      "additionalProperties": false
    }
  },
  "type": "object",
  "minProperties": 1,
  "additionalProperties": false,
  "properties": {
    "user_id": {
      "$ref": "#/definitions/user_id"
    }
  },
  "anyOf": [
    {
      "required": [
        "v"
      ]
    }
  ]
}

Не уверен, как назначить включение поля по умолчанию.

1 Ответ

0 голосов
/ 07 января 2020

Вы используете ключевое слово required в подсхеме user_id.

...
"definitions": {
    "user_id": {
      "type": "object",
      "minProperties": 1,
      "required": ["default"],
      "patternProperties": {
        "^[A-Za-z0-9]+": {
          "type": "string",
          "pattern": "^[A-Za-z0-9]+$"
        }
      },
      "additionalProperties": false
    }
  }
...
...