c# – 在输入API请求中找到未知属性时引发错误?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 在输入API请求中找到未知属性时引发错误?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1782字,纯文字阅读大概需要3分钟。
内容图文
![c# – 在输入API请求中找到未知属性时引发错误?](/upload/InfoBanner/zyjiaocheng/818/a666b2d1875f4e80b8f2e8a79249c8da.jpg)
目前我正在将带有JSON字符串的Rest Request作为过滤器传递给Web API,如下所示,
http://localhost:13825/api/values/get?filter={"Name":"abcdef","Address":"Something"}
我有一个类如下,
Public class Customer
{
public string Name{get;set;}
public string Address{get;set;}
}
当我使用以下代码将JSON字符串解析为类对象时,它工作正常,
public string Get(Customer filter)
{
}
问题是,当我通过如下过滤器时,
filter={"Name":"abcdef","Adess":"Something"}
我的代码将null值赋给Customer类的Address属性,但我想在任何class属性中找不到JSON字符串的属性时抛出错误.
我们可以使用MissingMemberHandling.Error但是当具有我们在类中定义的所有属性的附加属性时它会抛出错误.这里的问题不同,我每次都不会传递地址和名称属性.我可能会也可能不会同时通过.
所以我不能给所需的财产.
在输入JSON字符串中找到未知属性时,我需要抛出一个错误.
解决方法:
您可以将JsonSerializerSettings.MissingMemberHandling设置为MissingMemberHandling.Error.
Gets or sets how missing members (e.g. JSON contains a property that isn’t a member on the object) are handled during deserialization.
如果要全局执行此操作,对于所有控制器,只需将其添加到global.asax即可
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.MissingMemberHandling = MissingMemberHandling.Error;
如果要为特定操作/控制器执行此操作,则必须实现IControllerConfiguration:
public class RejectUnrecognizedPropertiesAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
controllerSettings.Formatters.Remove(controllerSettings.Formatters.JsonFormatter);
var formatter = new JsonMediaTypeFormatter
{
SerializerSettings =
{
MissingMemberHandling = MissingMemberHandling.Error
}
};
controllerSettings.Formatters.Add(formatter);
}
}
只需将[RejectUnrecognizedProperties]属性应用于您的操作/控制器即可.
内容总结
以上是互联网集市为您收集整理的c# – 在输入API请求中找到未知属性时引发错误?全部内容,希望文章能够帮你解决c# – 在输入API请求中找到未知属性时引发错误?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。