Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JSON.NET - read-only properties & support for IgnoreDataMember

Tags:

json.net

Does JSON.NET support the IgnoreDataMember attribute or do I have to use JsonIgnore instead? Is this something that will be support in future?

In addition I've found that JSON.NET is serializing properties that are get only - is this intended behaviour? Is it something we can switch off at serializer level?

like image 713
Dean Ward Avatar asked Jan 19 '23 05:01

Dean Ward


1 Answers

Answering my own question, but thought it may be helpful to others...

We ended up implementing this using a custom IContractResolver. We want the functionality of the DefaultContractResolver so we derive from that then tweak CreateProperty to ignore things we don't really care to serialise. E.g.

    internal class IgnoreDataMemberContractResolver : DefaultContractResolver
    {
        protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
        {
            JsonProperty property =  base.CreateProperty(member, memberSerialization);
            property.Ignored |= member.GetCustomAttributes(typeof(IgnoreDataMemberAttribute), true).Length > 0;
            return property;
        }
    }
like image 70
Dean Ward Avatar answered May 27 '23 17:05

Dean Ward