Salut tout le monde !
Je voudrait désérialiser un objet JSON reçut de l'API d'Itunes.
Voici la réponse que je reçoit : "Tous les albums du groupe Muse" :
Si j'utilise ce contrat de données, pour ne récupérer que le nom des albums, cela marche très bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 { "resultCount":50, "results":[ { "wrapperType":"collection", "collectionType":"Album", "artistId":1093360, "collectionId":326492721, "amgArtistId":142116, "amgVideoArtistId":null, "artistName":"Muse", "collectionName":"The Resistance", "collectionCensoredName":"The Resistance", "artistViewUrl":"http://itunes.apple.com/us/artist/muse/id1093360?uo=4", "collectionViewUrl":"http://itunes.apple.com/us/album/the-resistance/id326492721?uo=4", "artworkUrl60":"http://a3.mzstatic.com/us/r1000/007/Music/79/84/54/mzi.alpkhceo.60x60-50.jpg", "artworkUrl100":"http://a5.mzstatic.com/us/r1000/007/Music/79/84/54/mzi.alpkhceo.100x100-75.jpg", "collectionPrice":11.99, "collectionExplicitness":"notExplicit", "contentAdvisoryRating":null, "trackCount":12, "copyright":"2009 Warner Music UK Limited", "country":"USA", "currency":"USD", "releaseDate":"2009-09-11T07:00:00Z", "primaryGenreName":"Alternative" }, { "wrapperType":"collection", "collectionType":"Album", ... etc.
Mais si je souhaite récupérer plusieurs attribut de ma réponse JSON, la lecture des données plantes (erreur dans le foreach) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 // Contrat de données : [DataContract] public class iTunesResult { [DataMember] public iTuneJsonResults[] results { get; set; } } [DataContract] public class iTuneJsonResults { [DataMember] public string collectionName { get; set; } } // Lecture des données désérialisées : iTunesResult resultat = JSONHelper.Deserialize<iTunesResult>(json); foreach (var item in resultat.results) { Console.WriteLine("collectionName: " + item.collectionName); }
Est-ce que mon foreach ne peux s'appliquer que dans le cas ou il n'y à qu'un attribut dans ma classe iTuneJsonResults ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 // Contrat de données plus riche [DataContract] public class iTunesResult { [DataMember] public int resultCount { get; set; } public iTuneJsonResults[] results { get; set; } } [DataContract] public class iTuneJsonResults { [DataMember] public string collectionName{ get; set; } public string trackCount{ get; set; } } // Lecture des données désérialisées avec plusieurs attributs: iTunesResult resultat = JSONHelper.Deserialize<iTunesResult>(json); if (resultat.resultCount == 0) { Console.WriteLine("Aucun résulat"); } else { Console.WriteLine("Nombre de résultat : " + resultat.resultCount); foreach (var item in resultat.results) { Console.WriteLine("collectionName: " + item.collectionName); Console.WriteLine("trackCount: " + item.trackCount); } }
Quelqu'un voit-il ou est le problème ?
Merci !
Partager