我确信我错过了一些明显的东西。
是否可以在.NET Core的默认中间件/反序列化器中处理JSON反序列化错误?我需要确保特定值是 JSON 原语而不是对象/数组。如果它不是原语,我想在请求到达控制器之前终止请求并返回适当的状态代码。
控制器:
[HttpPost]
public IActionResult Post([FromBody] List<MyType> myTypes)
{
// Logic ....
return Created(new Uri("some-location/", UriKind.Relative), someValue);
}
请求正文:
[
{
"prop1": "some value",
"prop2": "some value",
"prop3": null
},
{
"prop1": "some value",
"prop2": "some value",
"prop3": {
"prop3-1": "some value"
}
}
]
The MyType
构造函数检查传入的参数,如果存在问题则抛出异常。prop3
in MyType
is a dynamic
场地。我已经验证当请求正文中的第二项被反序列化时会引发异常。
这一切感觉非常简单,但我只是找不到访问默认解串器的位置。
I tried this https://blogs.msdn.microsoft.com/brandonh/2017/07/31/using-middleware-to-trap-exceptions-in-asp-net-core/它确实捕获错误,但仅在请求进入控制器之后才捕获。
有没有办法在 JSON 注释中处理这个问题?我浏览了 Newtonsoft 文档,但什么也没跳出来。