Убедитесь, что json содержит только символы ascii, используя схему json - PullRequest
1 голос
/ 27 мая 2020

Мы взаимодействуем с аппаратным устройством, на которое загружаем файлы конфигурации json. Устройство не может обрабатывать символы, отличные от ascii, где-либо на json - даже если экранированное использование \uXXXX.

Мы уже выполняем проверку схемы с использованием draft-07, поэтому мы хотели бы указать это ограничение в схема. Мы можем наложить ограничения регулярного выражения на все наши строки.

Но проблема в том, что мы должны иметь additionalProperties: true в нескольких местах, а дополнительные свойства должны допускать любые значения json. Но мы также должны ограничить их, чтобы они содержали только символы ascii.

Можно ли это указать в схеме?

Пример упрощенной схемы:

{
   "$schema":"http://json-schema.org/draft-07/schema#",
   "type":"object",
   "properties":
   {
      "channel":
      {
        "type":"array",
        "items":
         {
            "type":"object",
            "properties":  { "name":{"type":"string"} },
             "required":["name"],
            "additionalProperties":true
         }
      }
   },
   "required":["channels"],
   "additionalProperties":true
}

Пример json который не должен проверять:

{
  "channels":[ {"name":"temperature", "input": "temp in °C"}],
  "other":[ {"mykey": "ü"}],
  "danish": "æøå"
}

1 Ответ

0 голосов
/ 27 мая 2020

Значение additionalProperties является самой схемой JSON (логические значения ЯВЛЯЮТСЯ схемой JSON!).

Если вы установите значение additionalProperties на то же, что и другие ваши свойства , он будет применен ко всем дополнительным свойствам.

Если вам нужен пример, пожалуйста, предоставьте примерную схему, с которой я могу работать, и я буду рад показать.

...