Contenuti

JsonIgnore: SerializeObject (di) properties (con) Newtonsoft.Json

JsonIgnore sarà l’attributo protagonista di questo breve articolo. Grazie ad esso sarà possibile applicare la pratica di Ignore su alcune proprietà durante la fase di SerializeObject col componente Newtonsoft.Json. Era da diverso tempo che non lo utilizzavo, ma proprio questa settimana -per un progetto che vi racconterò in seguito- sono stato costretto ad usarlo.

Newtonsoft.Json: Come installarlo

Per prima cosa -se non lo avete già fatto- dovete installare Newtonsoft.Json all’interno del vostro progetto e per farlo vi basterà lanciare il seguente comando dal Package Manager

Install-Package Newtonsoft.Json -Version 12.0.1

Attenzione: La versione 12.0.1 è quella più recente presente sulla pagina del pacchetto Newtonsoft.Json (nuget.org) però per una serie di compatibilità con altri pacchetti presenti nel mio csproj ho dovuto mettere la 11.0.2

JsonIgnore: SerializeObject di properties con Newtonsoft.Json

Di seguito verrà mostrato un esempio di codice (poche righe) su come utilizzare il JsonIgnore all’interno della definizione dell’oggetto da serializzale. JsonIgnore

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19

public class ScheduledJob
{
        public DateTime UTCScheduledTime = DateTime.MinValue;
        [JsonIgnore]
        public string Year = string.Empty;
        [JsonIgnore]
        public string Month = string.Empty;
        [JsonIgnore]
        public string Day = string.Empty;
        [JsonIgnore]
        public string Hour = string.Empty;
        [JsonIgnore]
        public string Minute = string.Empty;
}


var json = JsonConvert.SerializeObject(myScheduledJob);

Come vedete è davvero semplice ed aprendo il json prodotto il risultato sarà il seguente:

{“UTCScheduledTime”:“2019-01-18T21:01:00Z”}

In questo modo tutti i campi “fuffa” presenti nella classe iniziale verranno ignorati.

JsonIgnore: Nota Finale

In questo modo è possibile ignorare in maniera statica le proprietà firmandole nella classe stessa. E’ possibile effettuarlo anche in maniera dinamica e questo caso lo scriverò prossimamente in un nuovo articolo.