【发布时间】:2021-09-10 14:12:49
【问题描述】:
我想根据定义的 jsonschema 验证我的 json 数据。 我有以下脚本:
import json
import jsonschema
from jsonschema import validate
schema = {
"type": "array",
"items": {
"properties": {
"description": {
"type": "string"
},
"status": {
"type": "boolean"
},
"value1": {
"type": "number"
},
"value2": {
"type": "number"
}
}
}
}
data = json.loads('[{"description": "Hello world!", "status": true, "value1": 1, "value2": 2}, {"description": "Test", "status": "true", "value1": 3, "value2": 4}]')
def validateJson(data):
try:
validate(instance=data, schema=schema)
except jsonschema.exceptions.ValidationError as err:
print(err)
return False
return True
# validate it
isValid = validateJson(data)
if isValid:
print(data)
print("Given JSON data is Valid")
else:
print(data)
print("Given JSON data is InValid")
当我运行代码时,我发现数据无效,因为第二个对象中的“true”不是布尔值。但是如你所见,第一个对象
{"description": "Hello world!", "status": true, "value1": 1, "value2": 2}
有效。所以我真正想要的是 validateJSON 函数给了我有效和无效的对象,而不是作为一个整体来验证数据。我该怎么做?
【问题讨论】:
-
也许加载 JSON 数组并仅为特定项目定义架构,然后遍历数组的项目并验证每个项目?
-
@TDk 我没想到,谢谢!我会试试这个。
标签: python json jsonschema