Проверка схемы JSON со свойством required - PullRequest
0 голосов
/ 09 января 2019

Я использую https://www.jsonschemavalidator.net/ и пытаюсь проверить написанную мной схему.

Схема:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "required": [
    "accounts"
  ],
  "accounts": {
    "required": "account",
    "properties": {
      "account": {
        "type": "array",
        "minItems": 1,
        "maxItems": 999,
        "required": [
          "scheme",
          "accountType",
          "accountSubType"
        ],
        "items": {
          "type": "object",
          "properties": {
            "scheme": {
              "description": "scheme",
              "type": "object",
              "required": [
                "schemeName",
                "identification"
              ],
              "properties": {
                "schemeName": {
                  "type": "string",
                  "maxLength": 40,
                },
                "identification": {
                  "type": "string",
                  "maxLength": 256
                },
                "name": {
                  "type": "string",
                  "maxLength": 70
                },
                "secondaryIdentification": {
                  "type": "string",
                  "maxLength": 35
                }
              }
            },
            "currency": {
              "type": "string",
              "format": "iso-4217",
              "pattern": "^[A-Z]{3,3}$",
              "maxLength": 3,
              "example": "EUR"
            },
            "accountType": {
              "type": "string"
            },
            "accountSubType": {
              "type": "string",
              "maxLength": 35
            }
          }
        }
      }
    }
  }
}

Когда я использую онлайн-ссылку для подтверждения, как

{}

Я получаю ошибку

Message:
Required properties are missing from object: accounts.
Schema path:
#/required

Что правильно, но когда я делаю

{
  "accounts": {

  }
}

Я не получаю никаких ошибок, хотя я должен получить сообщение о том, что требуется "учетная запись". Кажется, что ни одно из внутренних «обязательных» полей не проверено.

Как я могу это исправить?

1 Ответ

0 голосов
/ 09 января 2019

Я нашел проблему.

  1. Учетные записи должны быть в «свойствах»
  2. «Требуется» должно быть внутри «предметов»

Теперь схема выглядит как

    {
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "accounts": {
            "required": "account",
            "properties": {
                "account": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 999,
                    "items": {
                        "type": "object",
                        "required": [
                            "scheme",
                            "accountType",
                            "accountSubType"
                        ],
                        "properties": {
                            "scheme": {
                                "description": "scheme",
                                "type": "object",
                                "required": [
                                    "schemeName",
                                    "identification"
                                ],
                                "properties": {
                                    "schemeName": {
                                        "type": "string",
                                        "maxLength": 40
                                    },
                                    "identification": {
                                        "type": "string",
                                        "maxLength": 256
                                    },
                                    "name": {
                                        "type": "string",
                                        "maxLength": 70
                                    },
                                    "secondaryIdentification": {
                                        "type": "string",
                                        "maxLength": 35
                                    }
                                }
                            },
                            "currency": {
                                "type": "string",
                                "format": "iso-4217",
                                "pattern": "^[A-Z]{3,3}$",
                                "maxLength": 3,
                                "example": "EUR"
                            },
                            "accountType": {
                                "type": "string"
                            },
                            "accountSubType": {
                                "type": "string",
                                "maxLength": 35
                            }
                        }
                    }
                }
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...