J'ai fait quelques tests avec TouchJSON la nuit dernière et cela fonctionnait assez bien en général pour les cas simples. J'utilise le code suivant pour lire un contenu JSON à partir d'un fichier et désérialiser:Désérialisation d'un résultat JSON complexe (tableau de dictionnaires) avec TouchJSON
NSString *jsonString = [[NSString alloc] initWithContentsOfFile:@"data.json"];
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF32BigEndianStringEncoding];
NSError *error = nil;
NSDictionary *items = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];
NSLog(@"total items: %d", [items count]);
NSLog(@"error: %@", [error localizedDescription]);
Cela fonctionne très bien si j'ai un objet JSON très simple dans le fichier (par exemple un dictionnaire):
{"id": "54354", "name": "boohoo"}
de cette façon, j'ai pu avoir accès au tableau de valeurs, comme je voulais l'élément en fonction de son index dans la liste:
NSArray *items_list = [items allValues];
NSString *name = [items_list objectAtIndex:1];
(je comprends que je pourrais avoir fet ched le nom avec l'API de dictionnaire)
Maintenant, je voudrais désérialiser une chaîne JSON semi-complexe, qui représente un tableau de dictionnaires. Un exemple d'une telle chaîne JSON est ci-dessous:
[{"id": "123456", "name": "touchjson"}, {"id": "3456", "name": "bleh"}]
Lorsque je tente d'exécuter le même code ci-dessus contre ce nouveau contenu dans le fichier data.json, je ne reçois aucun résultat en arrière. Mon appel NSLog() indique "total items: 0" et aucune erreur ne revient dans l'objet NSError.
Des indices sur ce qui se passe? Je suis complètement perdu sur ce qu'il faut faire, car il n'y a pas beaucoup de documentation disponible pour TouchJSON, et beaucoup moins d'exemples d'utilisation.
Merci, j'ai été capable de comprendre comment désérialiser cette chaîne JSON complexe avec json-framework. – jpm
J'ai aussi utilisé ce framework pour des structures json complexes et je n'ai pas encore rencontré de problèmes – seanalltogether
Le lien est mort! – Gustav