我正在使用Web API构建REST API。我遇到的问题是JSON序列化程序没有拒绝未映射的字段。假设我有一个像这样的简单对象:
public class MyClass
{
public bool MyBool { get; set; }
public string MyString { get; set; }
}
我有一个简单的控制器,它在请求的主体中接受这种类型的对象
public void Post(MyClass instace)
{
...
}
现在,我将请求发布到此控制器的端点,请求正文中包含以下JSON:
{ “MyBool”:真实, “MyString的”: “有效的”, “InvalidField”: “无效” }
目前,控制器将静默接受此请求,将true映射为MyBool,并将“Valid”映射到MyString,同时忽略InvalidField。如何更改此设置,以便在出现无效字段时抛出错误?
答案 0 :(得分:4)
我认为Required
不是您要找的,因为您对请求中存在的额外字段感兴趣。 Required
适用于缺席的字段。您可以自己阅读JSON并验证,但对我来说这是一项很多工作。因此,对绑定的支持就是我要看的东西。我刚刚写了一篇小博文来回答这个问题。请查看http://lbadri.wordpress.com/2014/01/28/detecting-extra-fields-in-asp-net-web-api-request/。
答案 1 :(得分:0)
将Required
属性应用于您的成员:
public class MyClass
{
[Required]
public bool MyBool { get; set; }
[Required]
public string MyString { get; set; }
}
请参阅http://msdn.microsoft.com/library/system.componentmodel.dataannotations.requiredattribute.aspx