2010-11-25 17 views
0

Je mentirais pour analyser un fichier JSON avec SBJSON mais j'ai un petit problème de compréhension? Voici ma structure JSON:Parse SBJSON + Syntaxe

  • id
  • texte
  • Date

Ainsi, pour exemple:

[{ "id": "1", "texte": "blabla", "date": "1235432241"}, {"id": "2", "texte": "blabla2", "date": "1235432241"}]

Et voici le code que j'ai trouvé analyser un J fichier SON Whit SBJSON:


- (void)downloadJSONFile:(NSData *)data 
{ 
    SBJSON *jsonParser = [[[SBJSON alloc] init] autorelease]; 
    NSString *jsonString = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; 

    id response = [jsonParser objectWithString:jsonString error:NULL]; 

    NSDictionary *feed = (NSDictionary *)response; 
    NSArray *nodes = (NSArray *)[feed valueForKey:@"keyValue"]; // here's I don't know what to put 

    for (int i = 0; i nodes.count; i++) { 

     NSDictionary *node = (NSDictionary *)[nodes objectAtIndex:i]; 
     NSLog(@"id = %@",[node objectForKey:@"id"]); 
    } 
} 

Je ne sais pas quoi écrire dans le valueForKey de mon tableau nœuds ... Quelqu'un peut-il expliquer à moi? Merci!

Répondre

1

Vos clés sont: identifiant, texte et date. Donc, si vous souhaitez analyser les objets avec l'identifiant clé, puis dans cette ligne que vous avez mis en surbrillance ce serait:

valueForKey: @ « id »

+0

Alors, dans ma boucle for, je peux demander des touches de texte et de date? – Pierre

+0

Dépend de ce que vous voulez analyser à partir de la réponse JSON. Votre réponse JSON a ces 3 clés. Donc, fondamentalement, ce sont vos clés: identifiant, texte et date. valueForKey signifie récupérer la valeur associée à la clé que vous avez mentionnée dans les guillemets du @ "" qui suit valueForKey. – Bourne

+0

Donc, si vous souhaitez récupérer des valeurs de texte seul, utilisez @ "text". Idem pour le repos – Bourne

0

par l'apparence de votre échantillon de JSON fourni vous devriez obtenir un NSArray contenant deux NSDictionary. Ainsi, le code doit être

NSArray *nodes = (NSArray *)response; 

Ne connaissant pas SBJSON il est possible que la réponse est en fait un NSDictionary. Dans ce cas, vous pouvez simplement imprimer le dictionnaire en utilisant NSLog(@"%@", feed); Vous devriez obtenir une impression qui ressemble à quelque chose comme:

{ 
    nameOfKey = (
       { 
       "id" = 1; 
       "text" = "blablabla" 
... 

Où nameOfKey serait le keyValue que vous recherchez.