Проверка пустого объекта в схеме json - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь проверить json, используя схему JSON. В приведенном ниже json «промышленность» относится к типу «объект» и не является обязательной. однако мне нужно выяснить, указано ли «промышленность» в json или нет.

вот моя json схема

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "enum": ["Russia", "Canada"]
    },
    "name": {
      "type": "string"
    },
    "industry": {
      "$ref": "#/definitions/industry"
    }
  },
 "required": [
    "id",
    "name"
    ],
  "definitions": {
      "industry": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "type": {
          "type": "string"
        },
        "codes": {
          "type": "array",
          "items": {
            "type": "integer"
          }
        }
      },
      "required": [
        "codes",
        "type"
      ],
      "title": "industry"
    }
  }
}    

вот моя json

{
  "id": "Russia",
  "price": 10.50
}    

I хотите знать, присутствует ли объект «промышленность» в заданном json bcos, если объект «промышленность» присутствует в json. Мне нужно сделать еще кое-что. в настоящее время, если я отправлю json, как указано выше, и попробуйте этот оператор if, как показано ниже. Это считается истиной, даже если объект "промышленность" отсутствует в json. Я считаю, что он рассматривает такой объект "индустрии" как этот {}, а не как null.

    "if":{
      "properties": {"industry" : {  "type": "object" }}
    },    

Будет полезно любое решение для проверки того, присутствует ли объект «промышленность» в объекте json или нет. Спасибо.

1 Ответ

1 голос
/ 25 мая 2020

Схема, содержащая «свойства», будет оцениваться как истина, если свойство отсутствует. То, что вы хотите поставить в качестве условного выражения «если», является «обязательным»:

"if": {"required":["industry"]}, "then": { ... }

...