Почему Altova валидирует все подряд JSON по схеме?
Всем привет, у меня такая проблема. Вернее даже не проблема, а такой вот забавный факт. Я имею JSONschema и пытаюсь по ней отвалидировать JSON. Работаю в Altova. Зачем я валидирую? ну я пытаюсь организовать первичное тестирование со стороны заказчика таким образом. В JSON schema я указываю соотвественно type и прочие параметры длины строк (maxLenght), максимума (maximum) и минимума (minimum).
"properties": {
"Cd": {
"description": "код ",
"type": "string",
"maxLength": 18
},
"Time": {
"description": "Период",
"type": "number",
"minimum": 1,
"maximum": 1000
},
"Stake": {
"description": "стейк",
"type": "number",
"minimum": 0.01,
"maximum": 100.00
},
"Name": {
"description": "Название",
"type": "string",
"maxLength": 50
},
"product": {
"description": "продукт",
"type": "string",
"maxLength": 20
},
"subproduct": {
"description": "подпродукт",
"type": "string",
"maxLength": 20
},
"productId": {
"description": "Ид продукт",
"type": "string"
},
"curCd": {
"description": "код кар",
"type": "string",
"maxLength": 3,
"default": "RUB"
},
"Sum": {
"description": "цена",
"type": "number",
"minimum": 0.00001,
"maximum": 100000000000000000000000.00000
},
"required": [
"Cd",
"Time",
"Stake",
"Name",
"product",
"currCd",
"Sum"
По-моему глубокому убеждению, если я валидирую JSON со значениями в полях не той длины, не того типа или не того размера, он не должен проходить валидацию по схеме. Однако... все ок, и старушка Альтова валидирует все подряд со всеми типами. Ок..пошел дальше, убрал поля, на которых выставлен атрибут обязательности requaired, нажал f8 и ... опять json is valid. Думаю, может я не так подключаю схему? Валидацию я прописываю в Validation against schema и вроде все верно. Может быть я чего-то не знаю о нотации JSON? Я считаю, что он должен валидироваться по тому же принципу, что и XML с XSD. При этом, в шапке схемы я указываю:
"$schema": "http://json-schema.org/schema#"
не могли бы мне помочь...
Ответы (1 шт):
Ох..наминусовали мне... И тем не менее, проблема была в том, что я на подключил draf-04. Его нужно было подключать следующим образом '''
"$schema": "http://json-schema.org/draft-04/schema#"
''' Что такое draft - 04. Это соответствующий релиз JSONschema и с ним можно ознакомиться тут https://json-schema.org/specification.html.