Ignorant les champs null dans Json.net
J'ai des données que j'ai pour sérialiser en JSON. Je suis à l'aide d'JSON.NET. Mon code de la structure est similaire à ceci:
public struct structA
{
public string Field1;
public structB Field2;
public structB Field3;
}
public struct structB
{
public string Subfield1;
public string Subfield2;
}
Problème c'est que mon JSON de sortie doit avoir SEULEMENT Field1
OU Field2
OU Field3
, ça dépend de champ est utilisé (c'est à dire pas null).
Par défaut, mon JSON ressemble à ceci:
{
"Field1": null,
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
"Field3": {"Subfield1": null, "Subfield2": null},
}
Je sais que je peux utiliser NullValueHandling.Ignore
, mais qui me donne JSON qui ressemble à ceci:
{
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
"Field3": {}
}
Et ce dont j'ai besoin est: est-ce
{
"Field2": {"Subfield1": "test1", "Subfield2": "test2"},
}
Est-il simple de la façon d'atteindre cet objectif?
Vous devez vous connecter pour publier un commentaire.
Oui, vous avez besoin d'utiliser
JsonSerializerSettings.NullValueHandling = NullValueHandling.Ignore
.Mais parce que les structures sont des types de valeur vous avez besoin pour marquer Champ2, Champ3 nullable pour obtenir le résultat attendu:
Ou tout simplement utiliser les classes au lieu de structs.
Documentation: NullValueHandling Énumération
Vous pouvez également appliquer le JsonProperty attribut pour les propriétés concernées et de définir la valeur null de la manipulation de cette façon. Reportez-vous à la
Reference
propriété dans l'exemple ci-dessous:Remarque: Le
JsonSerializerSettings
va remplacer les attributs.Hth.