Mon JSON est comme suit:
{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}
J'ai trouvé la bibliothèque Newtonsoft JSON.NET deserialize pour C #. J'ai essayé de l'utiliser comme suit:
object JsonDe = JsonConvert.DeserializeObject(Json);
Comment puis-je accéder à l'objet JsonDe
pour obtenir toutes les données "Type"? Je l'ai essayé avec une boucle mais cela ne fonctionne pas car l'objet n'a pas d'énumérateur.
Vous pouvez implémenter une classe qui contient les champs que vous avez dans votre code JSON.
class MyData
{
public string t;
public bool a;
public object[] data;
public string[][] type;
}
puis utilisez la version générique de DeserializeObject:
MyData tmp = JsonConvert.DeserializeObject<MyData>(json);
foreach (string typeStr in tmp.type[0])
{
// Do something with typeStr
}
Documentation: Sérialisation et désérialisation JSON
Depuis Json.NET 4.0 Release 1, il existe un support natif dynamique . Vous n'avez pas besoin de déclarer une classe, utilisez simplement dynamic
:
dynamic jsonDe = JsonConvert.DeserializeObject(json);
Tous les champs seront disponibles:
foreach (string typeStr in jsonDe.Type[0])
{
// Do something with typeStr
}
string t = jsonDe.t;
bool a = jsonDe.a;
object[] data = jsonDe.data;
string[][] type = jsonDe.Type;
Avec dynamique , vous n'avez pas besoin de créer une classe spécifique pour stocker vos données.
Comme indiqué dans le Newtonsoft Documentation , vous pouvez également effectuer une désérialisation sur un objet anonyme comme celui-ci:
var definition = new { Name = "" };
string json1 = @"{'Name':'James'}";
var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition);
Console.WriteLine(customer1.Name);
// James