有没有一种方法可以针对JSON结构的JSON模式来验证该结构?我已经查找并找到了JSON.Net validate,但这并不能达到我的目的。
JSON.net执行以下操作:
JsonSchema schema = JsonSchema.Parse(@"{
'type': 'object',
'properties': {
'name': {'type':'string'},
'hobbies': {'type': 'array'}
}
}");
JObject person = JObject.Parse(@"{
'name': 'James',
'hobbies': ['.NET', 'LOLCATS']
}");
bool valid = person.IsValid(schema);
// true
这验证为true。
JsonSchema schema = JsonSchema.Parse(@"{
'type': 'object',
'properties': {
'name': {'type':'string'},
'hobbies': {'type': 'array'}
}
}");
JObject person = JObject.Parse(@"{
'surname': 2,
'hobbies': ['.NET', 'LOLCATS']
}");
bool valid = person.IsValid(schema);
这也验证为true
JsonSchema schema = JsonSchema.Parse(@"{
'type': 'object',
'properties': {
'name': {'type':'string'},
'hobbies': {'type': 'array'}
}
}");
JObject person = JObject.Parse(@"{
'name': 2,
'hobbies': ['.NET', 'LOLCATS']
}");
bool valid = person.IsValid(schema);
只有此验证为false。
理想情况下,我希望它验证那里没有不应该在那里的字段(又名name
)。
4条答案
按热度按时间kmbjn2e31#
我觉得你只需要加上
添加到架构。这将停止提供未知属性。
所以现在你的结果将是:-正确,错误,错误
测试代码....
输出:-
您还可以在必须提供的字段中添加"required":true,这样您就可以返回一条包含缺失/无效字段详细信息的消息:-
bfnvny8b2#
好吧,我希望这会有帮助。
这是您的架构:
这是您的验证器:
而使用方法是:
如果你有任何问题,请问,希望这有帮助,请考虑到这不是一个完整的代码没有异常处理等...
bqujaahr3#
我只是使用Newtonsoft.json.Schema中的JSchemaGenerator添加简短的答案
holgip5t4#