验证数组的所有元素
Validate all elements of an array
我正在尝试在其关联架构中验证 JSON。
我正在使用以下网站进行验证:https://www.jsonschemavalidator.net/
我的测试数据是这样的
[
{
"testString": "string value",
"testInt": 1
},
{
"testString": "another string value",
"testInt": 2
}
]
模式定义如下
{
"type": "array",
"items": [
{
"type": "object",
"properties": {
"testString": {
"type": "string"
},
"testInt": {
"type": "integer"
}
},
"required": [
"testString",
"testInt"
],
"additionalProperties": false
}
]
}
对于给定的示例,它运行良好,但是如果我将意外属性添加到第二个元素中,它不会被检测为错误。
否则如果我将它添加到第一个元素
所以这有效(检测为错误JSON)
[
{
"testString": "string value",
"testInt": 1,
"unexpectedAttribute": "unexpected value"
},
{
"testString": "another string value",
"testInt": 2
}
]
但这不起作用(检测为有效JSON)
[
{
"testString": "string value",
"testInt": 1
},
{
"testString": "another string value",
"testInt": 2,
"unexpectedAttribute": "unexpected value"
}
]
我也试过这个 website 但我得到了相同的结果,所以我认为我可能忘记了我的架构中的某些东西。
有人遇到过同样的问题吗?
您的架构有错误,请从项目中删除多余的 []。使用 [] 时,必须为数组的每个元素添加规则。在您的情况下,只有第一个元素有规则,其他元素没有。您可以以任何方式更改项目数组的第二项,它不会产生任何错误,因为它根本没有经过验证。
{
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"testString": {
"type": "string"
},
"testInt": {
"type": "integer"
}
},
"required": [
"testString",
"testInt"
]
}
}
我正在尝试在其关联架构中验证 JSON。
我正在使用以下网站进行验证:https://www.jsonschemavalidator.net/
我的测试数据是这样的
[
{
"testString": "string value",
"testInt": 1
},
{
"testString": "another string value",
"testInt": 2
}
]
模式定义如下
{
"type": "array",
"items": [
{
"type": "object",
"properties": {
"testString": {
"type": "string"
},
"testInt": {
"type": "integer"
}
},
"required": [
"testString",
"testInt"
],
"additionalProperties": false
}
]
}
对于给定的示例,它运行良好,但是如果我将意外属性添加到第二个元素中,它不会被检测为错误。 否则如果我将它添加到第一个元素
所以这有效(检测为错误JSON)
[
{
"testString": "string value",
"testInt": 1,
"unexpectedAttribute": "unexpected value"
},
{
"testString": "another string value",
"testInt": 2
}
]
但这不起作用(检测为有效JSON)
[
{
"testString": "string value",
"testInt": 1
},
{
"testString": "another string value",
"testInt": 2,
"unexpectedAttribute": "unexpected value"
}
]
我也试过这个 website 但我得到了相同的结果,所以我认为我可能忘记了我的架构中的某些东西。
有人遇到过同样的问题吗?
您的架构有错误,请从项目中删除多余的 []。使用 [] 时,必须为数组的每个元素添加规则。在您的情况下,只有第一个元素有规则,其他元素没有。您可以以任何方式更改项目数组的第二项,它不会产生任何错误,因为它根本没有经过验证。
{
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"testString": {
"type": "string"
},
"testInt": {
"type": "integer"
}
},
"required": [
"testString",
"testInt"
]
}
}