【问题标题】:Filter Serialized class properties to reduce WebAPI payload过滤序列化类属性以减少 WebAPI 负载
【发布时间】:2013-12-18 15:35:45
【问题描述】:

使用 WebAPI 的 C# ASP.NET Webform 站点

我有一个 petapoco 类,上面有 50 个属性,但对于某些 WebAPI 方法,我想过滤哪些属性被序列化并在 HttpResponseMessage 中发送到客户端(以减少负载)。

例如,假设我在一个类中有以下类属性:

ID, FirstName, LastName, Address, City, State, Zip, DOB    

我需要一些 WebApi 方法来序列化每个属性,但也许我只想返回另一种方法

ID, FirstName, LastName

有没有内置的方法来处理这个问题? 如果不是,那么构建处理此问题的最佳方法是什么?

编辑:我正在寻找一种方法来做到这一点,而无需修改类

【问题讨论】:

标签: c# webforms asp.net-web-api json.net


【解决方案1】:

您应该能够为每个属性创建 ShouldSerialize 方法。

Xml serialization - Hide null values

使您能够动态决定哪些字段被序列化。不要担心链接显示 XML,也应该适用于 JSON 序列化。

【讨论】:

  • ShouldSerialize 会起作用,但我正在寻找一种方法来做到这一点,而无需修改可序列化类或不必创建部分类。
【解决方案2】:

使用JsonIgnoreAttribute 从序列化中排除属性。

例如在model.cs中:

public class Account
{
    public int ID { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    [JsonIgnore]
    public string Address { get; set; }
    [JsonIgnore]
    public string City { get; set; }
    [JsonIgnore]
    public string State { get; set; }
.
.
.
}

【讨论】:

  • 对于自动生成的模型代码,这通常不是可行的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多