Json验证不工作
本文关键字:工作 验证 Json | 更新日期: 2023-09-27 17:52:11
我试图通过模式验证验证我的json,但我认为有一些问题:
string schemaJson = @"
{
'description': 'A payload',
'type': 'object',
'properties': {
'totalRecords': {'type':'number'},
'payload': {
'type': 'object',
'properties': {'name':{'type':'string'}}
}
},
'additionalProperties': false
}";
JsonSchema schema = JsonSchema.Parse(schemaJson);
JObject payl = JObject.Parse(@"
{
'totalRecords': 75,
'payload':{'namdse':'ksjfkjsdkfjkd'}
}");
IList<string> messages;
bool valid = payl.IsValid(schema, out messages);
Console.WriteLine(valid);
foreach (string message in messages)
{
Console.WriteLine(message);
}
控制台返回true
,但它应该返回false
,因为我使用了错误的属性名称namdse
而不是name
。
尝试在payload
属性中设置additionalProperties
为false
。
...
'payload': {
'type': 'object',
'properties': {
'name':{'type':'string'}
},
'additionalProperties': false
}
...
你的json是有效的,因为namdse
被认为是额外的属性。如果name
是必填字段,您可能还需要添加required
关键字。
...
'payload': {
'type': 'object',
'properties': {
'name':{'type':'string', 'required': true}
},
'additionalProperties': false
}
...
您的对象是无效的json,使用双引号,这是有效的http://jsonlint.com/
{
"description": "A payload",
"type": "object",
"properties": {
"totalRecords": {
"type": 123
},
"payload": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
}
}
},
"additionalProperties": false
}