Проверка схемы YAML?

Есть ли язык проверки схемы для YAML? Я гуглил, но не нашел ничего полезного.

Что-то вроде формата XSD с использованием самого языка для описания схемы было бы лучшим выбором в моем случае.


person Klaim    schedule 20.02.2011    source источник
comment
возможный дубликат Проверка документа yaml в python   -  person mechanical_meat    schedule 26.03.2012
comment
См. также механизм проверки Cerberus   -  person dreftymac    schedule 11.04.2019


Ответы (4)


Схему JSON можно использовать с большинством документов YAML, в результате чего получается более переносимое и лучше документированное решение, чем Rx или Подтвердить. Схема JSON — единственная из трех, для которых мне удалось найти поддержку редактора< /а>.

На этой странице отслеживается дополнительная информация об использовании схемы YAML и JSON, включая инструменты и поддержку редактора. На момент написания статьи в Visual Studio Code существовала поддержка редактора, а через npm был доступен инструмент проверки на основе командной строки.


Полное раскрытие: я создал веб-сайт, указанный выше, чтобы попытаться сделать приложение JSON Schema к YAML более доступным для обнаружения. Я также написал расширение редактора для VS Code, которое с тех пор было заменено расширением RedHat, указанным выше.

person vossad01    schedule 30.06.2017
comment
Как мы можем добиться проверки yaml в java. Я использую github.com/networknt/json-schema-validator, который отлично работает, если однако проверка файла json не работает с файлом yaml. - person Piyush Kumar; 18.11.2019
comment
Просто оставьте примечание читателям, которые будут читать дальше, что вы, вероятно, захотите использовать ajv для проверки JSON и js-yaml, чтобы превратить ваш yaml в JSON. Это самые полезные библиотеки узлов для этих целей по состоянию на 2020 год. - person Steven Lu; 25.04.2020
comment
Я все еще немного смущен. @cheesus, просто чтобы уточнить, когда вы говорите, что работает как шарм, вы говорите, что преобразовали YAML в JSON, а затем проверили его с помощью инструментов схемы JSON (например, ajv), или эти инструменты каким-то образом предназначены для работы непосредственно с YAML? (По моему опыту, этого не происходит, и я бы их тоже не ожидал. Просто фразу JSON Schema можно использовать с большинством документов YAML, которые читаются так, как должны?!?) Может кто-нибудь пояснить. Спасибо. - person McKrassy; 26.05.2020
comment
@McKrassy, ​​да, схему JSON действительно можно использовать с файлами YAML без преобразования их в JSON. Размышляя об этом, вы должны рассматривать файлы JSON и YAML как древовидные структуры. Схема JSON накладывает ограничения на эти древовидные структуры, поэтому они применяются как к файлам JSON, так и к файлам YAML. Вот пример схемы JSON, используемой для YAML: marketplace.visualstudio.com/items ?itemName=redhat.vscode-yaml - person cheesus; 27.05.2020

Попробуйте Kwalify (только для Ruby и Java) или Rx (много языков)

person leebriggs    schedule 20.02.2011
comment
Kwalify не позволит вам сделать сопоставление сопоставлений, например: Джоуи: возраст: 22 пол: M Энн: возраст: 34 пол: F - person Toddius Zho; 24.06.2015
comment
Kwalify была хорошей альтернативой, к сожалению, она больше не поддерживается. pykwalify выглядит многообещающе - person nowox; 28.10.2015
comment
Использование чего-то, что не является стандартом, не кажется хорошим решением. Я бы предпочел использовать jsonschema, а затем проверить YAML, используя ее, поскольку YAML имеет сопоставление один к одному с JSON. Swagger делает что-то подобное. - person Lucas; 09.08.2016

Интересно, имеет ли смысл повторно использовать для этого схему JSON. YAML можно легко преобразовать в JSON без потери какой-либо информации (?), поэтому теоретически YAML может быть проверен той же цепочкой инструментов, что позволит сообществу открытого исходного кода сконцентрироваться на одной хорошей цепочке инструментов схемы. Сама схема также может быть написана на YAML и преобразована в JSON.

person Yuri Astrakhan    schedule 02.10.2016

Хорошая идея. Погуглил, потому что искал то же самое.

Можно преобразовать YAML в XML определенным образом (аналогично JSON ‹-> XML) и проверить с помощью стандартного средства проверки XML.

В зависимости от вашей платформы существуют инструменты или фрагменты для этого преобразования: JavaScript ( NPM), Ruby, Java (Jackson), Java (TestNG) (вам нужно будет посмотреть в источнике, какие параметры ему нужны).

Если это делается с помощью API, позиции ошибок можно даже сопоставить с исходным файлом YAML.

person Ondra Žižka    schedule 11.05.2018
comment
Здравствуйте, я хочу создать валидатор YAML. что я должен делать. Я имею в виду, как лучше всего это сделать? - person Akash Patel; 19.09.2020
comment
@AkashPatel, наиболее распространенный подход - иметь схему. Тогда вам нужно что-то, что будет проверять все дерево YAML по этой схеме. Сам подход к проверке зависит от того, насколько мощна ваша схема - от простых строгих деревьев без рекурсии до сложных вещей, таких как XSD. Вот почему я предложил подход в своем ответе. - person Ondra Žižka; 23.09.2020