Lo siento, decidí escribir otra respuesta ya que ninguna de las otras respuestas es lo suficientemente pegable.
Si no desea decorar propiedades con algunos atributos, o si no tiene acceso a la clase, o si desea decidir qué serializar durante el tiempo de ejecución, etc., etc., así es como lo hace en 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;
}
}
Uso
JsonConvert.SerializeObject(YourObject, new JsonSerializerSettings()
{ ContractResolver = new IgnorePropertiesResolver(new[] { "Prop1", "Prop2" }) };);
He publicado el código aquí en caso de que alguien quiera agregar algo
https://github.com/jitbit/JsonIgnoreProps
ACTUALIZACIÓN IMPORTANTE: asegúrese de guardar en caché el ContractResolver
objeto si decide usar esta respuesta, de lo contrario, el rendimiento puede verse afectado.