jsonschema.validate () не проверяет тип из схемы - PullRequest
0 голосов
/ 05 декабря 2018

Я не уверен, правильно ли я читаю документы по jsonschema, однако, насколько я могу судить, этот пакет должен позволить мне проверить соответствие объекта JSON указанной схеме с помощью jsonschema.validate ().Следующий код не говорит мне, что "age" должно быть числом.

import json
import jsonschema

schema = '{"name":{"type":"string","required":true},"age":{"type":"number","required":true}}'
schema = json.loads(schema)
data = '{"name":"Foo","age":"Bar"}'

def json_validator(data):
    try:
        json.loads(data)
        print("Valid Json")
        return True
    except ValueError as error:
        print("Invalid JSON: %s" % error)
        return False

def schema_validator(data, schema):
    try:
        jsonschema.validate(data, schema)
    except jsonschema.exceptions.ValidationError as e:
        print(e)
    except jsonschema.exceptions.SchemaError as e:
        print(e)

json_validator(data)
schema_validator(data, schema)

Я что-то упустил или это должно работать?

Любая помощь будет высоко ценится, спасибо.

1 Ответ

0 голосов
/ 07 декабря 2018

Ваша схема не является допустимой схемой.Вам нужно объявить их как properties, и вы используете required неправильно (если вы не используете черновик-03, что довольно маловероятно на данный момент).Вот схема, которую вы хотите.

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "number" }
  },
  "required": ["name", "age"]
}
...