我有一个像json的
{"post": {"someKey": {"anotherKey":"anotherValue"}}}
并且第一个键是有效的http方法,并且可以在运行时为-post,get等所有有效的http方法之一。
这是我的模式
var schema = {
"type": "object",
"patternProperties": {
"^[a-z]+$": {
'properties': {
"type": "object",
'properties': {
'someKey':{
'type': 'object',
'properties': {
'anotherKey': {'type': 'string'},
}
}
}
}
}
}
}
var valid = { "post": {"mkey":"myvalue"}}; //This is getting passed but I know that is wrong
var invalid = { "1": {"mkey":"myvalue"}}; //This is passed but actually it should fail
console.log(tv4.validateMultiple(invalid, schema));
有人可以帮忙吗?
答案 0 :(得分:0)
我想通了:
{
'type': 'object',
'patternProperties': {
'^(POST|GET|DELETE|HEAD|PATCH|HEAD|PUT)$': {
'additionalProperties': false,
'type': 'object',
'required': ['someKey'],
'properties': {
'someKey': {
'type': 'string'
}
}
}
}
}
这里,需要注意的事情: 1.'additionalProperties':false对于patternProperties很重要 2.根据JSON Schema规范,您不能有不区分大小写的匹配,因此所有字母都是大写的