C# 在asp.net web api中反序列化JSON之前验证JSON
我想在json输入被反序列化到我的对象之前验证它 例如:C# 在asp.net web api中反序列化JSON之前验证JSON,c#,json,asp.net-web-api2,C#,Json,Asp.net Web Api2,我想在json输入被反序列化到我的对象之前验证它 例如: {“ID”:[“1234”]}有效=并反序列化到我的POCO类 {“ID”:[“1234”,不是有效的JSON,我想抛出一个错误 我想抛出一个错误,但目前Web API正在优雅地处理它并反序列化到相应的类。在输入json到达控制器之前,我是否可以拦截转换并验证输入json?知道文本是否为有效json的唯一方法是尝试对其进行解析。如果解析器抛出异常,它不是有效的JSON。请参阅) 如果您使用的是NewtonSoft的Json.Net,那么您
{“ID”:[“1234”]}
有效=并反序列化到我的POCO类
{“ID”:[“1234”
,不是有效的JSON,我想抛出一个错误
我想抛出一个错误,但目前Web API正在优雅地处理它并反序列化到相应的类。在输入json到达控制器之前,我是否可以拦截转换并验证输入json?知道文本是否为有效json的唯一方法是尝试对其进行解析。如果解析器抛出异常,它不是有效的JSON。请参阅) 如果您使用的是NewtonSoft的Json.Net,那么您可以根据模式验证Json,这样您就知道您已经
- 有效的JSON,即
- 以您期望的格式
详细信息。我在控制器方法的开头简单检查:
if (!Model.IsValid(ModelName))
{
//handle error
}
else
{
//continue
}
我假设您的API没有被命中,并且您怀疑JSON的格式不正确?没有,我的API被命中,并且输入被反序列化,但是我预期会出现错误,因为它不应该反序列化格式不正确的JSON,就像结尾没有黄铜一样。这很有趣,因为我预期反序列化{ID:[“1234”]将引发异常,因为它的格式不正确。另外,{ID:[“1234”]}json也是无效的…您使用的是什么序列化库?json.NET?谢谢您指出这一点,只是编辑了它。您是否尝试使用ModelState.IsValid检查是否失败?谢谢,显然Model.IsValid和反序列化程序不匹配。如果输入格式不正确,我希望不会反序列化,但我得到了答案f或者现在。耶,我认为有一些行为,模型对象被实例化为“null”,而不管JSON是否被正确反序列化。