Modification des noms de propriétés lors de la sérialisation
L'attribut JsonProperty permet de définir des noms personnalisés pour les propriétés dans la sortie JSON.
public class Film
{
[JsonProperty("titre")]
public string Titre { get; set; }
[JsonProperty("date_parution")]
public DateTime DateParution { get; set; }
}
Film filmPrefere = new Film
{
Titre = "Inception",
DateParution = new DateTime(2010, 7, 16)
};
string jsonFilm = JsonConvert.SerializeObject(filmPrefere, Formatting.Indented);
Console.WriteLine(jsonFilm);
// {
// "titre": "Inception",
// "date_parution": "2010-07-16T00:00:00"
// }
Ordre de sérialisation des propriétés
La propriété Order dans JsonProperty contrôle la séquence des champs dans le document JSON.
public class ProfilUtilisateur
{
public string Courriel { get; set; }
[JsonProperty(Order = 1)]
public bool Archive { get; set; }
[JsonProperty(Order = 2)]
public DateTime DateArchivage { get; set; }
public DateTime DateCreation { get; set; }
public DateTime DateModification { get; set; }
[JsonProperty(Order = -2)]
public string NomComplet { get; set; }
}
ProfilUtilisateur profil = new ProfilUtilisateur
{
NomComplet = "Marie Dupont",
Courriel = "marie@example.com",
Archive = true,
DateArchivage = new DateTime(2022, 5, 15),
DateModification = new DateTime(2022, 5, 15),
DateCreation = new DateTime(2020, 3, 10)
};
string jsonProfil = JsonConvert.SerializeObject(profil, Formatting.Indented);
Console.WriteLine(jsonProfil);
// {
// "NomComplet": "Marie Dupont",
// "Courriel": "marie@example.com",
// "DateCreation": "2020-03-10T00:00:00",
// "DateModification": "2022-05-15T00:00:00",
// "Archive": true,
// "DateArchivage": "2022-05-15T00:00:00"
// }
Validation avec Required pendant la désérialisation
Utilisez Required dans JsonProperty pour imposer la présence de propriétés dans le JSON entrent.
public class Produit
{
[JsonProperty(Required = Required.Always)]
public string Designation { get; set; }
[JsonProperty(Required = Required.AllowNull)]
public DateTime? DatePeremption { get; set; }
}
string jsonEntree = @"{
'Designation': 'Ordinateur portable',
'DatePeremption': null
}";
Produit produit = JsonConvert.DeserializeObject<Produit>(jsonEntree);
Console.WriteLine(produit.Designation);
// Ordinateur portable
Console.WriteLine(produit.DatePeremption);
// null
Exclure des propriétés avec JsonIgnore
L'attribut JsonIgnore empêche une propriété d'être incluse dans la sérialisation ou désérialisation.
public class Compte
{
public string Prenom { get; set; }
public string AdresseEmail { get; set; }
[JsonIgnore]
public string MotDePasseHache { get; set; }
}