在 asp.net web api 中反序列化之前验证 JSON

Validating JSON before it gets deserialized in asp.net web api

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

示例:

{"ID": ["1234"]},有效 = 并反序列化到我的 POCO class

{"ID": ["1234" 不是有效的 JSON 我想抛出一个错误

我想抛出一个错误,但现在 Web API 优雅地处理它并反序列化到适当的 class。无论如何我可以拦截转换并在输入 json 到达我的控制器之前对其进行验证?

了解您的文本是否有效 JSON 的唯一方法是尝试解析它。如果解析器抛出异常,则它是无效的 JSON。参见 How to make sure that string is Valid JSON using JSON.NET)。

如果您使用的是 NewtonSoft 的 Json.Net,您可以根据模式验证您的 JSON,这样您就知道您有

  • 有效JSON,即
  • 采用您期望的格式

了解详情。

我在控制器方法的开头简单检查:

if (!Model.IsValid(ModelName))
{
    //handle error
}
else
{
    //continue 
}