Ignorer une propriété lors de la désérialisation à l'aide de Json.Net avec ItemRequired = Required.Always
Je suis en utilisant Json.Net pour sérialiser et désérialiser les classes en json et à l'arrière.
J'ai ajouté à une classe marquée avec [JsonObject(ItemRequired = Required.Always)]
(ou Required.Always
) un nouveau get-seulement de la propriété. Que les résultats dans la suite de JsonSerializationException
:
Newtonsoft.Json.JsonSerializationException: propriété Requise
'<PropertyName>'
pas trouvé en JSON
Je pensais que le marquage de propriété avec JsonIgnore
permettrait de résoudre le problème, mais cela ne fonctionne pas.
Comment puis-je dire Json.Net que cette propriété doit être ignoré?
Voici un exemple minimal de reproduire le problème:
[JsonObject(ItemRequired = Required.Always)]
public class Hamster
{
public string FirstName { get; set; }
public string LastName { get; set; }
[JsonIgnore]
public string FullName { get { return FirstName + LastName; }}
}
private static void Main()
{
var hamster = new Hamster {FirstName = "Bar", LastName = "Arnon"};
var serializeObject = JsonConvert.SerializeObject(hamster);
var deserializeObject = JsonConvert.DeserializeObject<Hamster>(serializeObject);
}
source d'informationauteur i3arnon
Vous devez vous connecter pour publier un commentaire.
Évidemment
JsonIgnore
ne contrôle que la sérialisation dans ce cas.JsonIgnore
est nécessaire de préciser que laFullName
propriété ne doit pas être sérialisé à la représentation json.D'ignorer la propriété lors de la désérialisation, il faut ajouter les
JsonProperty
annotation avecRequired = Required.Default
(ce qui ne signifie pas nécessaire).Donc, c'est comment éviter le
JsonSerializationException
: