2015-08-03 3 views
1

Voici une réponse de l'API:désérialisation avec Json.NET

{"success":true,"data":[{"_id":"559276d1f21a16dc28f8cd67","name":"Businessman","__v":0}]} 

Toutes les méthodes de serveur retourne un objet JSON dans le format:

{ "success": "true/false", data: "object_array[]" } 

ou:

{ "success": "true/false", data: "single_object" } 

Donc je devrais avoir un objet C# pour la réponse et aussi j'ai besoin de différents types d'objets pour la partie "données" de la réponse. La propriété "data" sera constituée de tableaux de différents types ou parfois d'un seul objet.

Existe-t-il un moyen dynamique de gérer ce scénario ou dois-je définir différents types pour chacune des réponses?

Merci.

+0

Cela dépend de ce que vous voulez. Vous pouvez désérialiser simplement à un objet dynamique, mais alors vous n'obtiendrez aucune vérification de propriété de design ou intellisense. Personnellement, je créerais des objets pour chacun. – pquest

Répondre

1

Vous pouvez utiliser le mot-clé dynamic.

dynamic jObj = JObject.Parse(json); 
Console.WriteLine(jObj.success); 

if(jObj.data is JArray) 
{ 
    Console.WriteLine(jObj.data[0].name); 
} 

if (jObj.data is JObject) 
{ 
    Console.WriteLine(jObj.data.name); 
}