JsonSchema: взаимосвязь типов и их значений
Всем доброго и продуктивного времени суток.
Недавно столкнулся с необходимостью описать структуру Json для ее проверки и после недолгого поиска в интернете было найдено возможное решение JsonSchema. Полное описание возможных параметров и их значений на великом и могучем найдено не было, но суть не в этом. Типичная сфера применения JsonSchema - это проверка корректности всевозможных API запросов и ответов. И если при описании типов, формата строки, обязательности параметра или макс. мин. количества элементов и т.д. никаких проблем не возникает, то при попытке описать взаимосвязь/взаимозависимость параметров друг от друга сталкиваюсь с проблемой. Объясню на примере. К примеру имеем следующий объект: var obj = { // anything... "sqlServer1" : "FULL.QUALIFIED.NAME1", "dbName1" : "dbOne", "dbTable1" : "tablOne", "cols1" : ["col1_1", "col1_2", "col1_3"], // anything... "sqlServer2" : "FULL.QUALIFIED.NAME2", "dbName2" : "dbTwo", "dbTable2" : "tablTwo", "cols2" : ["col2_1", "col2_2", "col2_3"] }; В приведенном примере можно с легкостью описать (стандартными средствами JsonSchema) и проверить (например при использовании Tiny Validator возможно добавление собственных функций проверки) тип значений, и даже описать с помощью pattern синтаксис. Но как описать, что свойство dbName1 относится к sqlServer1, dbTable1 относится к dbName1, cols1 относится к dbTable1? И самое главное, как затем это проверить? Прихожу к выводу, что JsonSchema для таких задач не подходит и придется мастерить свой велосипед с сопутствующими костылями и т.д.. Но все еще теплится надежда, что я не прав и возможно использовать уже сущствующие библиотеки JsonSchema для своего проекта. Буду рад любым конструктивным предложениям и подсказкам в какую сторону копать для решения моей проблемы. Заранее всем спасибо за уделенное время и помощь. |
Всем доброго времени суток.
Сразу извиняюсь за поднятие темы, но все таки прошу знающих людей подсказать советом/словом/ссылкой. Может JsonSchema не подходит для описанных задач и есть другое решение?! |
Часовой пояс GMT +3, время: 02:25. |