Newtonsoft JSON Deserialize

Mon JSON est comme suit:

{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]} 

J’ai trouvé la bibliothèque de désérialisation JSON.NET de Newtonsoft pour C #. J’ai essayé de l’utiliser comme suit:

 object JsonDe = JsonConvert.DeserializeObject(Json); 

Comment puis-je accéder à l’object JsonDe pour obtenir toutes les données “Type”? Je l’ai essayé avec une boucle mais cela ne fonctionne pas car l’object n’a pas d’énumérateur.

Vous pouvez implémenter une classe qui contient les champs que vous avez dans votre JSON

 class MyData { public ssortingng t; public bool a; public object[] data; public ssortingng[][] type; } 

puis utilisez la version générique de DeserializeObject:

 MyData tmp = JsonConvert.DeserializeObject(json); foreach (ssortingng typeStr in tmp.type[0]) { // Do something with typeStr } 

Documentation: Sérialisation et désérialisation de JSON

Une solution beaucoup plus simple: utiliser un type dynamic

A partir de Json.NET 4.0 version 1, il existe un support dynamic natif. Vous n’avez pas besoin de déclarer une classe, utilisez simplement la dynamic :

 dynamic jsonDe = JsonConvert.DeserializeObject(json); 

Tous les champs seront disponibles:

 foreach (ssortingng typeStr in jsonDe.Type[0]) { // Do something with typeStr } ssortingng t = jsonDe.t; bool a = jsonDe.a; object[] data = jsonDe.data; ssortingng[][] type = jsonDe.Type; 

Avec la dynamic, vous n’avez pas besoin de créer une classe spécifique pour stocker vos données.

Selon la documentation de Newtonsoft, vous pouvez également désérialiser un object anonyme comme celui-ci:

 var definition = new { Name = "" }; ssortingng json1 = @"{'Name':'James'}"; var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition); Console.WriteLine(customer1.Name); // James