problème de récupération des données à partir de JSON
abc88
Membre
Bonjour,
J'ai un petit souci avec le JSON.
les données ne sont pas récupérées.j'obtiens null lors de
l'affichage.
voici un aperçu de mon code :
J'ai un petit souci avec le JSON.
les données ne sont pas récupérées.j'obtiens null lors de
l'affichage.
voici un aperçu de mon code :
<br />
NSDictionary *json = [myJSON JSONValue];<br />
<br />
NSArray *listinfo = [json objectForKey:@"info"];<br />
info *infor = [[info alloc] init];<br />
<br />
for (NSDictionary *dic in listinfo) {<br />
<br />
infor.business = [dic objectForKey:@"Business"];<br />
NSLog(@"%@",infor.business);<br />
}<br />
<br />
lblbu.text = [NSString stringWithFormat:@"%@ - %d",infor.business];<br />
[info release];<br />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si le minimum c'est 5.0 je te conseille d'utiliser NSJSONSerialization à la place.
Aussi, donne le JSON que tu parses.
Au passage, je te conseille fortement de respecter les conventions de nommage, il faut que tes noms de classes commencent par une majuscule et préférablement par ton préfix personnel.
J'ai essayé ce bout de code pour localiser la source du problème,et j'ai constaté que les données sont récupérées dans la console mais l'affichage reste null
Si c'est lblbu.text (utilise des noms plus explicites) alors je suspecte que c'est lvlby qui est nil, auquel cas à mon avis tu essayes de passer une valeur à un IBOutlet qui n'est pas encore charger en mémoire.
le log :
C'est pourquoi ça me semble étrange d'avoir un (null) à la fin
Le problème peut aussi venir du JSON lui-même, tu dois le montrer aussi.
Et habitue-toi à tester tous ces paramètres.
voici la méthode :
Ton JSON déclare un tableau contenant des dictionnaires contenant chacun une seule paire clé-valeur, ça n'a aucun sens, la bonne façon de faire ce serait d'avoir un dictionnaire avec 5 clés-valeurs:
Avec ce JSON, tu supprimes simplement le "for" en gardant le contenu, toutes tes variables recevraient une valeur.
Alors que dans la configuration actuelle, lorsque tu énumères les NSDictionary, chaque propriété de infor reçoit une valeur, le problème c'est qu'à chaque passage seule une clé se trouve dans le dictionnaire, et tous les autres objectForKey: retourneront nil durant l'itération.
Ce qu'il faudrait faire serait de vérifier que la valeur que tu récupères n'est pas nil avant de la rentrer dans la propriété.
Mais comme je l'ai dit, ton JSON en lui-même est bancal, il ne faut pas que ces clés-valeurs soient seules dans un dictionnaire ça n'a aucun sens. Si tu peux avoir plusieurs entrées tu aurais alors un NSArray de NSDictionaries, chaque dictionnaires contiendraient alors les 5 même clés-valeurs.
J'ai commencé par importer le JsonKit et chercher des tuto /smile.png' class='bbc_emoticon' alt=':)' />
Tu veux lire et écrire tes données localement dans l'application de cette manière-là ?
Je te conseille de sauvegarder tes données d'une autre manière, en utilisant NSKeyedArchiver/NSKeyedUnarchiver ce sera beaucoup plus efficace.