Je suis nouveau à cela et j'ai compris une partie de l'analyse JSON.
Ma réponse JSON de l'API ressemble à ceci.
WebClient wc = new WebClient(); var projectUri = "http://xxx/tfs/defaultcollection/_apis/projects?api-version=3.0"; wc.UseDefaultCredentials = true; string jsonProjectCollection = wc.DownloadString(projectUri); var project = JsonConvert.DeserializeObject<Project>(jsonProjectCollection); var projectname = project.value[0].name; int count = project.count; Console.WriteLine(count); Console.WriteLine(projectname);
3 Réponses :
Nevermind, je ne sais pas ce que je pensais ici, c'est comment.
Pourquoi utiliser une boucle pour code> s'appuyer sur une valeur de comptage code> distincte code> lorsque vous pouvez simplement utiliser
foreach code> sur
projet.value code>?
@ Jonskeet - Les deux sont des approches valides. Techniquement, la boucle pour la boucle est plus rapide, alors c'est une raison pour laquelle.
@Sscubasteve: Sans connaître le type de projet.value code>, vous ne pouvez pas dire ce qui est plus rapide. Au-delà de cela, toute différence de performance est presque certainement i> sera insignifiante et j'encouragerais vivement l'OP à écrire le code le plus simple qui fonctionne pour commencer - ce qui est beaucoup plus susceptible d'être un
foreach code> boucle.
@Jonskeet - Oui, mais c'est un exemple, nous ne connaissons pas l'utilisation finale. Cela pourrait fonctionner sur n rangées. De plus, A pour la boucle est la première année CS, il n'est guère plus complexe qu'un pour chacun. Vous pourriez discuter d'un pour chacun est plus complexe, car il y a plus de choses sous le capot.
@Sscubasteve: Il y a plus de choses sur le capot, mais c'est un code plus simple à lire. C'est pourquoi c'est dans la langue de commencer. L'indice ici n'est qu'un détail de mise en œuvre - à moins que cela soit utilisé à des fins autres i> que "d'arriver à chaque entrée", je me contenterais que foreach code> décrit l'intention du code plus clairement qu'un
pour code> boucle.
Pour moi, cela a plus de sens et est plus utile de désérialiser et de conserver la structure d'objet. L'objet intérieur est une matrice JSON. Vous pouvez utiliser la classe JSON.NET JARRAY pour stocker ce qui est de la valeur intérieure.
https://www.newtonsoft.com/json/help/html/t_newtonsoft_json_linq_jarray.htm p>
donc, désérialiser -> Tirez le tableau hors de la structure d'objet -> Itéréter à travers ledit tableau. P>
for(int i = 0; i < project.count; i++) { Console.WriteLine(project.value[i].name); }
var projectCollection = JsonConvert.DeserializeObject<Project>(jsonProjectCollection); var projects= projectCollection.value; int count = projectCollection .count; foreach(var project in projects) { Console.WriteLine(project.name); } Console.WriteLine(count); Console.WriteLine(projectname);
Vraisemblablement
Project.Value Code> est une liste ou une matrice, utilisez donc
foreach (entrée varié dans le projet.Value) code> etc.
Ajoutez également la classe de projet dans la question