Я уверен, что упускаю что-то явно очевидное.
Возможно ли обрабатывать ошибки десериализации JSON в промежуточном программном обеспечении / десериализаторе по умолчанию .NET Core?Мне нужно убедиться, что конкретное значение является примитивом 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"
}
}
]
Конструктор MyType
проверяет переданные аргументы и выдает исключение в случае возникновения проблемы.prop3
в MyType
- это поле dynamic
.Я убедился, что исключение выдается, когда десериализуется второй элемент в теле запроса.
Все это выглядит довольно просто, но я просто не могу найти, где получить доступ к десериализатору по умолчанию.
Я попытался это , и он ловит ошибки, но только после того, как запрос поступил в контроллер.
Есть ли способ справиться с этим в аннотациях JSON?Я просмотрел документы Newtonsoft, но ничего не выскочило.