您有几种选择。我建议您在阅读以下内容之前,先阅读有关该主题的Json.Net文档文章。
本文介绍了两种方法:
- 创建一个
bool
基于Json.Net将遵循的命名约定来返回值的方法,以确定是否序列化该属性。 - 创建一个忽略该属性的自定义合同解析器。
在这两者中,我赞成后者。完全跳过属性-
仅使用它们忽略所有形式的序列化中的属性。相反,创建一个忽略有问题的属性的自定义合同解析器,并且仅在您要忽略该属性时才使用合同解析器,而让该类的其他用户可以随意序列化该属性,也可以不随意执行。
编辑 为了避免链接腐烂,我将从文章中发布相关代码
public class ShouldSerializeContractResolver : DefaultContractResolver{ public new static readonly ShouldSerializeContractResolver Instance =new ShouldSerializeContractResolver(); protected override JsonProperty CreateProperty( MemberInfo member, MemberSerialization memberSerialization ) { JsonProperty property = base.CreateProperty( member, memberSerialization ); if( property.DeclaringType == typeof(Employee) && property.PropertyName == "Manager" ) { property.ShouldSerialize = instance => { // replace this logic with your own, probably just // return false; Employee e = (Employee)instance; return e.Manager != e; }; } return property; }}


