反序列化Json字符串时忽略某些属性

时间:2019-07-05 08:32:49

标签: c# json json.net

反序列化json字符串时如何忽略某些属性。

说我有一个字符串

{"Id": 123, "name":"Test", "Description":"desc123ds"}

和具有相同属性的类。 在某些情况下,我不想返回“ Id”。

我尝试了一个自定义的ContractResolver,但它唯一要做的就是设置默认值,并且该属性仍然存在于json字符串中。

public class CoreJsonContractResolver<T> : DefaultContractResolver
    {
        public static CoreJsonContractResolver<T> Instance { get; } = new CoreJsonContractResolver<T>();

        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
        {
            var property = base.CreateProperty(member, memberSerialization);
            if(property.DeclaringType == typeof(T))
            {
                if (property.PropertyName == "Id")
                    property.Ignored = true;
            }
            return property;
        }
    }

编辑: 我不使用[JsonIgnore]属性的原因是,仅在某些情况下才需要忽略属性。

1 个答案:

答案 0 :(得分:2)

看看JsonIgnore attribure,看看这个article