How to exclude property from Json Serialization How to exclude property from Json Serialization json json

How to exclude property from Json Serialization

If you are using Json.Net attribute [JsonIgnore] will simply ignore the field/property while serializing or deserialising.

public class Car{  // included in JSON  public string Model { get; set; }  public DateTime Year { get; set; }  public List<string> Features { get; set; }  // ignored  [JsonIgnore]  public DateTime LastModified { get; set; }}

Or you can use DataContract and DataMember attribute to selectively serialize/deserialize properties/fields.

[DataContract]public class Computer{  // included in JSON  [DataMember]  public string Name { get; set; }  [DataMember]  public decimal SalePrice { get; set; }  // ignored  public string Manufacture { get; set; }  public int StockCount { get; set; }  public decimal WholeSalePrice { get; set; }  public DateTime NextShipmentDate { get; set; }}

Refer for more details

If you are using System.Web.Script.Serialization in the .NET framework you can put a ScriptIgnore attribute on the members that shouldn't be serialized. See the example taken from here:

Consider the following (simplified) case:

public class User {    public int Id { get; set; }    public string Name { get; set; }    [ScriptIgnore]    public bool IsComplete    {        get { return Id > 0 && !string.IsNullOrEmpty(Name); }    } } 

In this case, only the Id and the Name properties will be serialized, thus the resulting JSON object would look like this:

{ Id: 3, Name: 'Test User' }

PS. Don't forget to add a reference to "System.Web.Extensions" for this to work

Sorry I decided to write another answer since none of the other answers are copy-pasteable enough.

If you don't want to decorate properties with some attributes, or if you have no access to the class, or if you want to decide what to serialize during runtime, etc. etc. here's how you do it in Newtonsoft.Json

//short helper class to ignore some properties from serializationpublic class IgnorePropertiesResolver : DefaultContractResolver{    private readonly HashSet<string> ignoreProps;    public IgnorePropertiesResolver(IEnumerable<string> propNamesToIgnore)    {        this.ignoreProps = new HashSet<string>(propNamesToIgnore);    }    protected override JsonProperty CreateProperty(MemberInfo member, MemberSerialization memberSerialization)    {        JsonProperty property = base.CreateProperty(member, memberSerialization);        if (this.ignoreProps.Contains(property.PropertyName))        {            property.ShouldSerialize = _ => false;        }        return property;    }}


JsonConvert.SerializeObject(YourObject, new JsonSerializerSettings()        { ContractResolver = new IgnorePropertiesResolver(new[] { "Prop1", "Prop2" }) });

Note: make sure you cache the ContractResolver object if you decide to use this answer, otherwise performance may suffer.

I've published the code here in case anyone wants to add anything