Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net web api中反序列化JSON之前验证JSON_C#_Json_Asp.net Web Api2 - Fatal编程技术网

C# 在asp.net web api中反序列化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,那么您

我想在json输入被反序列化到我的对象之前验证它

例如:

{“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是否被正确反序列化。