以下是我上周遇到的情景:
我将一个JSON对象数组发送到WebAPI方法,其签名如下:
void Post(IEnumerable<ItemViewModel> items)
JSON数组的一个示例可能看起来像(我为了简洁而删除了大部分属性):
[{ size: 1 },
{ size: 1.5 },
{ size: 2 },
{ size: 3 },
{ size: 1.25 }]
View Model类似于以下内容(为简洁起见,删除了大多数属性):
public class ItemViewModel
{
public int Size { get; set; }
}
问题是ItemViewModel的Size属性是“int”类型,而一些JSON对象的size属性是“double”类型。
WebAPI没有将对象视为ItemViewModel类型的匹配,但它无声地失败并仍然对集合中的其他对象进行反序列化,只是忽略那些不完全匹配的对象。
是否有任何设置/配置点或其他方法让WebAPI抛出异常或在发生这种情况时记录警告?
答案 0 :(得分:1)
有几种方法可以做到。
首先,最简单的方法是使用[Required]
属性修饰模型,然后调用ModelState.IsValid
。那会告诉你一些事情是否没有正确反序列化。
如果你不喜欢疯狂地用属性来装饰你的所有课程(我讨厌它),我会听到有关Fluent Validation的好消息。