2011-02-07 15 views
8

¿Me podría decir cómo pasar una cadena JSON que se parece a esto:cómo analizar JSON en Objective C - SBJSON

{"lessons":[{"id":"38","fach":"D","stunde":"t1s1","user_id":"1965","timestamp":"0000-00-00 00:00:00"},{"id":"39","fach":"M","stunde":"t1s2","user_id":"1965","timestamp":"0000-00-00 00:00:00"}]} 

lo probé así:

SBJSON *parser =[[SBJSON alloc] init]; 
    NSArray *list = [[parser objectWithString:JsonData error:nil] copy]; 
    [parser release]; 
    for (NSDictionary *stunden in list) 
    { 
     NSString *content = [[stunden objectForKey:@"lessons"] objectForKey:@"stunde"]; 

    } 

gracias en avanzar

mejores deseos

+0

gracias :) no sabía dónde :) – Chris

Respuesta

22

tenga en cuenta que los datos JSON tiene la siguiente estructura:

  1. el valor de nivel superior es un objeto (un diccionario) que tiene un solo atributo llamado atributo 'de lecciones'
  2. las 'clases' es una matriz
  3. cada elemento de la matriz 'lecciones' es un objeto (un diccionario que contiene una lección) con varios atributos, incluyendo 'stunde'

El código correspondiente es:

SBJSON *parser = [[[SBJSON alloc] init] autorelease]; 
// 1. get the top level value as a dictionary 
NSDictionary *jsonObject = [parser objectWithString:JsonData error:NULL]; 
// 2. get the lessons object as an array 
NSArray *list = [jsonObject objectForKey:@"lessons"]; 
// 3. iterate the array; each element is a dictionary... 
for (NSDictionary *lesson in list) 
{ 
    // 3 ...that contains a string for the key "stunde" 
    NSString *content = [lesson objectForKey:@"stunde"]; 

} 

Un par de observaciones:

  • En -objectWithString:error:, el parámetro error es un puntero a un puntero. Es más común usar NULL en lugar de nil en ese caso. Es también una buena idea no pasar NULL y utilizar un objeto NSError para inspeccionar el error en caso de que el método devuelve nil

  • Si jsonObject se usa sólo en ese método en particular, es probable que no necesita copiarlo . El código de arriba no.

+0

gracias amigo :) – Chris

Cuestiones relacionadas