过滤ASP.NET Core API中的属性
发布时间:2021-02-20 06:28:28  所属栏目:asp.Net  来源:互联网 
            导读:我想在我的API中提供以下 JSON: { id: 1 name: Muhammad Rehan Saeed, phone: 123456789, address: { address: Main Street, postCode: AB1 2CD }} 我想让客户端能够过滤掉他们不感兴趣的属性.以便以下URL返回JSO
                
                
                
            | 
                         我想在我的API中提供以下 JSON: {
  "id": 1
  "name": "Muhammad Rehan Saeed","phone": "123456789","address": {
    "address": "Main Street","postCode": "AB1 2CD"
  }
} 
 我想让客户端能够过滤掉他们不感兴趣的属性.以便以下URL返回JSON的子集: 
 {
  "name": "Muhammad Rehan Saeed","address": {
    "postCode": "AB1 2CD"
  }
} 
 在ASP.NET Core中实现此功能的最佳方法是什么,以便: >该解决方案可以全局应用,也可以应用于单个控制器或过滤器等操作. 我找到了使用自定义JSON.Net ContractResolver的this解决方案.合同解析程序可以通过将其添加到ASP.Net Core使用的默认合同解析程序或手动添加到单个操作(如this代码示例而不是控制器)来全局应用.此外,这是一个特定于JSON的实现. 解决方法您可以使用Dynamic与ExpandoObject一起创建包含所需属性的动态对象. ExpandoObject是动态关键字在底层使用的内容,它允许在运行时动态添加和删除属性/方法.[HttpGet("test")]
public IActionResult Test()
{
    dynamic person = new System.Dynamic.ExpandoObject();
    var personDictionary = (IDictionary<string,object>)person;
    personDictionary.Add("Name","Muhammad Rehan Saeed");
    dynamic address = new System.Dynamic.ExpandoObject();
    var addressDictionary = (IDictionary<string,object>)address;
    addressDictionary.Add("PostCode","AB1 2CD");
    personDictionary.Add("Address",address);
    return Json(person);
} 
 这导致了 {"Name":"Muhammad Rehan Saeed","Address":{"PostCode":"AB1 2CD"}} 
 您只需要创建一个服务/转换器或类似的东西,它将使用反射来循环您的输入类型,并且只承载您指定的属性. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
推荐文章
            站长推荐
            - asp.net-mvc – ASP.NET MVC:部分知道它是否是从
 - asp.net-mvc – TempData在第二个请求后不会被破
 - Entity Framework使用DBContext实现增删改查
 - asp.net-mvc – ASP.NET MVC如何实现返回上一页的
 - asp.net-mvc – 在asp.net mvc中设置为Session的
 - asp.net – jquery getJson没有将任何值传递给控
 - WPF中ComboBox绑定数据库自动读取产生数据
 - asp.net – WebForms:MasterPages中的动态(或绝
 - asp.net-mvc – 如何成功配置Common.Logging?
 - asp.net – Request.Browser.Platform不返回iPad
 
热点阅读
            