Вибачте, що я вирішив написати ще одну відповідь, оскільки жодна з інших відповідей не є достатньо копіювальною.
Якщо ви не хочете прикрашати властивості деякими атрибутами, або у вас немає доступу до класу, або якщо ви хочете вирішити, що серіалізувати під час виконання, і т. Д. Тощо, ось як це зробити в Newtonsoft.Json
//short helper class to ignore some properties from serialization
public class IgnorePropertiesResolver : DefaultContractResolver
{
private IEnumerable<string> _propsToIgnore;
public IgnorePropertiesResolver(IEnumerable<string> propNamesToIgnore)
{
_propsToIgnore = propNamesToIgnore;
}
protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)
{
JsonProperty property = base.CreateProperty(member, memberSerialization);
property.ShouldSerialize = (x) => { return !_propsToIgnore.Contains(property.PropertyName); };
return property;
}
}
Використання
JsonConvert.SerializeObject(YourObject, new JsonSerializerSettings()
{ ContractResolver = new IgnorePropertiesResolver(new[] { "Prop1", "Prop2" }) };);
Я опублікував тут код на випадок, якщо хтось хоче щось додати
https://github.com/jitbit/JsonIgnoreProps
ВАЖЛИВО ОНОВЛЕННЯ: переконайтесь, що ви кешуєте ContractResolver
об’єкт, якщо ви вирішили використовувати цю відповідь, інакше може постраждати продуктивність.