У меня есть файл схемы JSON, подобный этому, который содержит пару преднамеренных ошибок:
{
"$schema": "http://json-schema.org/schema#",
"type": "object",
"description": "MWE for JSON Schema Validation",
"properties": {
"valid_prop": {
"type": ["string", "number"],
"description": "This can be either a string or a number."
},
"invalid_prop": {
// NOTE: "type:" here should have been "type" (without the colon)
"type:": ["string", "null"],
"description": "Note the extra colon in the name of the type property above"
}
},
// NOTE: Reference to a non-existent property
"required": ["valid_prop", "nonexistent_prop"]
}
Я хотел бы написать сценарий Python (или, что еще лучше, установить CLI с PiP), который может найти эти ошибки.
Я видел этот ответ, в котором предлагается сделать следующее (изменено для моего варианта использования):
import json
from jsonschema import Draft4Validator
with open('./my-schema.json') as schemaf:
schema = json.loads('\n'.join(schemaf.readlines()))
Draft4Validator.check_schema(my_schema)
print("OK!") # on invalid schema we don't get here
но приведенный выше сценарий не обнаруживает ни одной из ошибок в файле схемы. Я бы заподозрил, что он обнаружит по крайней мере лишнее двоеточие в свойстве "type:"
.
Я неправильно использую библиотеку? Как мне написать сценарий проверки, который обнаруживает эту ошибку?
schema = json.load(schemaf)
- это более лаконичный способ загрузки файла. Дажеschema = json.loads(schemaf.read())
было бы лучше, чем читать построчно, просто чтобы снова присоединиться к ним..readlines()
также сохраняет символы новой строки в каждой строке, поэтому объединение с\n
создает результаты с двойным интервалом. - person Mark Tolonen   schedule 13.01.2020"type:"
можно было отловить. - person Tomalak   schedule 13.01.2020