Схема Python для сопоставления сообщений с необязательными аргументами - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь использовать схему python или схему json для проверки словаря с вложенными словарями и списками:

message = 
    {"pagination":
    {"page":1,"perPage":25},
    "items":[{"id":1, "settings":[{"name":"name1","value":true}]},
             {"id":2 ,"settings":[{"name":"name2","value":true}}]}
    }

Мне нужны следующие проверкидолжно произойти:

  1. «pagination» находится в сообщении
  2. «items» находится в сообщении и содержит хотя бы одного члена
  3. Каждый элемент внутри «items» содержит"id"
  4. Мы не заботимся о дополнительных элементах, которые элемент может содержать (например, "настройки")

Как я могусделать схему более похожей на регулярное выражение? (Например: я не знаю, какие дополнительные элементы помимо «id» могут содержать элементы следующего сообщения, но до тех пор, пока выполняются первые три условия - я хочуэто должно быть подтверждено).

Например, следующая схема должна также распознаваться схемой:

message = 
{"pagination":
{"page":1,"perPage":25},
"items":[{"id":1, "type": "A"},
         {"id":2 ,"type": "B"}]}
}

1 Ответ

0 голосов
/ 17 февраля 2019

Это звучит как идеальный вариант использования JSON Schema.Проверка схемы JSON является вычитающей.Все документы JSON действительны для пустой схемы ({}).Каждое ключевое слово в схеме затем ограничивает этот набор всех документов JSON чем-то более полезным.Таким образом, вы можете объявить, что объект должен иметь свойство «id» и явно не указывать, что любое другое свойство разрешено, потому что это просто нормальный режим работы для JSON-схемы.

Я почти написал эту очень простую схему дляВы в качестве примера, но затем решили, что лучше просто указать на « Понимание схемы JSON », чтобы вы могли учиться самостоятельно, а не я, предлагая вам решение.Но, пожалуйста, задайте другой (более конкретный) вопрос, если застряли после прочтения этого урока.

...