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

问题描述 投票:0回答:1

是否有一种“简单的方法”可以忽略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个回答
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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.