【问题标题】:Ignore property from serialization in a collection of a type with Json.Net使用 Json.Net 忽略类型集合中的序列化属性
【发布时间】:2018-09-04 17:07:35
【问题描述】:

是否有一种“简单的方法”可以忽略来自 Asp.Net Core 中某个类型集合的模型序列化中的属性?

示例

public sealed class MainViewModel
{
  public Guid Id { get; set; }

  [JsonIgnore("PropertyInSubViewModel")]
  public ICollection<SubViewModel> Products { get; set; }
}

这个想法是从模型序列化中删除 SubViewModel 中的一些属性,所以当我在我的操作中得到它时,它会设置它的默认值,而不是通过请求设置的那个。

【问题讨论】:

标签: asp.net-mvc asp.net-core json.net


【解决方案1】:

不适用于JsonIgnore。这只能应用于您要忽略的实际属性,并且在那一点上是不变的。但是,JSON.NET 确实支持conditional serialization。最简单和最直接的方法是在您的类中添加一个ShouldSerialize* 方法。您显然需要确定一些您可以依靠的条件来确定,但这可能是直截了当的,因为实际上在您的子视图模型实例上设置了一些布尔值。基本上,您只需添加以下内容:

public class SubViewModel
{
    ...

    public bool ShouldSerializePropertyInSubViewModel()
    {
         // return true or false to either allow or disallow serializing the property on this instance
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多