Exclude Property from json during Serialization in newtonsoft
This is a tiny helper class to exclude a property from Json Serialization.
After you add newtonsoft as reference you need to create this class
public class IgnorePropertiesResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
{
private readonly HashSet<string> ignoreProps;
public IgnorePropertiesResolver(IEnumerable<string> propNamesToIgnore)
{
this.ignoreProps = new HashSet<string>(propNamesToIgnore);
}
public IgnorePropertiesResolver()
{
this.ignoreProps = new HashSet<string>();
}
internal void ignoreProperty(string propName)
{
this.ignoreProps.Add(propName);
}
internal void ignoreProperties(List<string> ignoredProperties)
{
foreach(var prop in ignoredProperties)
{
this.ignoreProps.Add(prop);
}
}
protected override Newtonsoft.Json.Serialization.JsonProperty CreateProperty(System.Reflection.MemberInfo member, Newtonsoft.Json.MemberSerialization memberSerialization)
{
Newtonsoft.Json.Serialization.JsonProperty property = base.CreateProperty(member, memberSerialization);
if (this.ignoreProps.Contains(property.PropertyName))
{
property.ShouldSerialize = _ => false;
}
return property;
}
}
then you can use this function to use this class
var resolver = new IgnorePropertiesResolver();
resolver.ignoreProperty("weight");
resolver.ignoreProperty("sku");
JsonConvert.SerializeObject(value, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore,
ContractResolver = resolver
});