Comment désérialiser une propriété JSON qui peut être deux types de données différents à l'aide de Json.NET
Je suis en utilisant Json.NET pour un projet que je suis en train de travailler sur.
À partir d'une API externe, je reçois JSON avec des propriétés qui sont des objets, mais quand ils sont vides 'false' est passé.
Par exemple:
data: {
supplier: {
id: 15,
name: 'TheOne'
}
}
Pourrait aussi être:
data: {
supplier: false
}
Comment dois-je définir le fournisseur de biens, de telle sorte que le fournisseur sera désérialisé à un Fournisseur de l'objet ou la valeur null.
Maintenant j'ai:
public class Data {
[JsonProperty("supplier")]
public SupplierData Supplier { get; set; }
}
public class SupplierData {
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
}
Mais maintenant, lorsque vous tentez de désérialiser lorsque le fournisseur a une valeur 'false' il échoue.
Je voudrais que le Fournisseur de biens à null si la valeur JSON est "faux".
J'espère que quelqu'un sait comment faire cela. Merci.
source d'informationauteur Marc Selman
Vous devez vous connecter pour publier un commentaire.
Cela peut être résolu en faisant une coutume
JsonConverter
pour votreSupplierData
classe. Voici ce que le convertisseur peut ressembler à:De l'utiliser, tout ce que vous devez faire est d'ajouter un
[JsonConverter]
attribut à laSupplier
propriété dans votreData
classe comme ceci:Ci-dessous est une démonstration de convertisseur en action. Notez que la démo suppose que vous avez une sorte de contenant l'objet, pour
data
de propriété, car le JSON dans votre question ne peut pas se tenir debout sur ses propres. J'ai défini une classe appeléeRootObject
à cet effet:La véritable démo de code suivante:
Et voici le résultat de la ci-dessus: