使用Json.Net忽略类型集合中的序列化属性

时间:2018-09-04 17:07:35

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

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

样品

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

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

这个想法是从模型序列化中删除SubViewModel中的一些属性,因此当我执行该操作时,它将具有默认值,而不是通过请求设置的默认值。

1 个答案:

答案 0 :(得分:2)

不适用于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
    }
}