Itérer objet json en c#
Je' Voulez-vous créer une boucle pour vérifier une condition sur mon objet Json. Je suis à la recherche d'un moyen pour parcourir par le biais de mon objet json:
Json:
{"tasks":[
{
"id":-1,
"name":"Gantt editor",
"code":"",
"level":0,
"status":"STATUS_ACTIVE",
"start":1372608000000,
"duration":21,
"end":1375113599999,
"startIsMilestone":true,
"endIsMilestone":false,
"collapsed":false,
"assigs":[]
},
{
"id":"tmp_fk1372575559620",
"name":"release",
"code":"",
"level":1,
"status":"STATUS_ACTIVE",
"start":1372608000000,
"duration":1,
"end":1372694399999,
"startIsMilestone":false,
"endIsMilestone":false,
"collapsed":false,
"assigs":[]
}
], //number of tasks may vary
"selectedRow":8,
"deletedTaskIds":[],
"resources":
[
{
"id":"tmp_1",
"name":"Resource 1"
}
],
"roles":[
{
"id":"tmp_1",
"name":"Project Manager"
}
],
"canWrite":true,
"canWriteOnParent":true
}
Je sais comment cartographier supposons donc j'ai mappé Tâche et RootObject comme suit:
public class Task
{
public object id { get; set; }
public string name { get; set; }
public string code { get; set; }
public int level { get; set; }
public string status { get; set; }
public object start { get; set; }
public int duration { get; set; }
public object end { get; set; }
public bool startIsMilestone { get; set; }
public bool endIsMilestone { get; set; }
public bool collapsed { get; set; }
public List<object> assigs { get; set; }
}
public class RootObject
{
public List<Task> tasks { get; set; }
public int selectedRow { get; set; }
public List<object> deletedTaskIds { get; set; }
public List<Resource> resources { get; set; }
public List<Role> roles { get; set; }
public bool canWrite { get; set; }
public bool canWriteOnParent { get; set; }
} //And etc .....
Je sais comment faire pour vérifier les tâches manuellement, par exemple pour la première
Rootobject project = JsonConvert.DeserializeObject<Rootobject>(jsonString);
Task task = project.tasks.FirstOrDefault(t => t.id == "-1");
decimal start = Convert.ToDecimal(task.start);
decimal end = Convert.ToDecimal(task.end);
decimal prog = Convert.ToDecimal(task.progress);
et ensuite utiliser la tâche de vérifier tous les attributs
Comment puis-je vérifier toutes les tâches ?
Merci D'Avance !
foreach(var task in project.tasks)
?OriginalL'auteur Poorya | 2013-08-20
Vous devez vous connecter pour publier un commentaire.
Si vous voulez parcourir toutes les tâches, vous pouvez utiliser:
ou vous pouvez utiliser LINQ pour les filtrer, quelque chose comme ceci:
qui est fondamentalement la même chose avec votre exemple, avec la seule différence que là Où les rendements IEnumerable et pas seulement comme FirstOrDefault dans votre exemple.
OriginalL'auteur Alexey
Utilisation JArray et JObject dans json.net
il y a quelques très bons échantillons ici
http://james.newtonking.com/projects/json/help/index.html?topic=html/QueryingLINQtoJSON.htm
http://james.newtonking.com/projects/json/help/index.html?topic=html/T_Newtonsoft_Json_Linq_JArray.htm
RootObject
. Pas besoin de traiter avec Json.Net plus...OriginalL'auteur Lars Anundskås