Реагировать JSON Зависимости схемы - PullRequest
1 голос
/ 15 февраля 2020

Я пытаюсь записать JSONSchema, чтобы использовать ее с реактивом-jsonschema-form, но у меня возникают проблемы с получением зависимостей, работающих и в правильном порядке.

  "properties":{
      "condition": {
          "type":"string",
          "enum":["1","2"],
           "options": {
           "dependencies":[
              {"id":"one","value":"1"},
              {"id":"two","value":"2"}
              ]
           }
      },
      "one":{
          "id":"one",
          "type":"number"
          },
      "two":{
          "id":"two",
          "type":"string"
      },
      "misc": {
        "type": "string"
      }
  },
  "type": "object"
}

Выше я надеялся, что допустимые данные формы будут ...

{
  "condition": "1",
  "one": 123
  "misc": "abc"
}

Или, если условие равно "2" ...

{
  "condition": "2",
  "two": "something",
  "misc": "abc"
}

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

{
  "condition": "1",
  "one": 123,
  "two": "something",
  "misc": "abc"
}

Как я могу изменить схему JSON так, чтобы только соответствующее поле было возможно на основе «условия» .

Примечание ... order имеет значение в представленной схеме. Пожалуйста, смотрите https://rjsf-team.github.io/react-jsonschema-form/ для демонстраций.

1 Ответ

1 голос
/ 16 февраля 2020

Вы должны использовать оператор oneOf. Он принимает несколько зависимостей, и если одна из них истинна, json является действительным.

Пример:

"oneOf":[
    {
      "required": [
        "name",
        "dateOfBirth"
      ]
    },
    {
      "required": [
        "name",
        "age"
      ]
    }

Дополнительные примеры можно найти здесь .

...