Cómo analizar el objeto JSON en iPhone SDK (XCode) usando JSON-Framework

Tengo un objeto JSON como este:

{ "data": {"array": ["2", {"array": [ {"clientId":"1","clientName":"Andy","job":"developer"}, {"clientId":"2","clientName":"Peter","job":"carpenter"} ] } ] }, "message":"MSG0001:Success", "status":"OK" } 

Quiero obtener el valor de array [0] value (2) y array [1] (clientId, clientName, job) usando JSON-Framework. ¿Tienes alguna idea de cómo hacer eso?

Suponiendo que haya seguido las instrucciones para instalar JSON-Framework en su proyecto, así es como lo usa (tomado de los documentos aquí ):

 // Parse the string into JSON NSDictionary *json = [myString JSONValue]; // Get the objects you want, eg output the second item's client id NSArray *items = [json valueForKeyPath:@"data.array"]; NSLog(@" client Id : %@", [[items objectAtIndex:1] objectForKey:@"clientId"]); 

gracias por su respuesta, mi problema resuelto, modifico un poco de su código, aquí están:

 // Parse the string into JSON NSDictionary *json = [myString JSONValue]; // Get all object NSArray *items = [json valueForKeyPath:@"data.array"]; NSArray *array1 = [[items objectAtIndex:1] objectForKey:@"array"]; NSEnumerator *enumerator = [array1 objectEnumerator]; NSDictionary* item; while (item = (NSDictionary*)[enumerator nextObject]) { NSLog(@"clientId = %@", [item objectForKey:@"clientId"]); NSLog(@"clientName = %@",[item objectForKey:@"clientName"]); NSLog(@"job = %@", [item objectForKey:@"job"]); } 

Necesitamos 1 clase, digamos MyData.hy MyData.m

 //MyData.h @interface MyData : NSObject { NSString *clientId; NSString *clientName; NSString *job; } @property (nonatomic, retain) NSString *clientId; @property (nonatomic, retain) NSString *clientName; @property (nonatomic, retain) NSString *job; @end //MyData.m @implementation MyData @synthesize clientId, clientName, job; - (void)dealloc{ [clientId release]; [clientName release]; [job release]; [super dealloc]; } @end //------------------------------------- 

Para almacenar nuestros datos:

 NSMutableArray *dataArray = [[NSMutableArray alloc]init]; while (item = (NSDictionary*)[enumerator nextObject]) { MyData *aMyData = [[MyData alloc] init]; aMyData.clientId = [item objectForKey:@"clientId"]; aMyData.clientName = [item objectForKey:@"clientName"]; aMyData.job = [item objectForKey:@"job"]; [dataArray addObject:aMyData]; [aMyData release]; aMyData = nil; } 

prueba esto

 while (item = (NSDictionary*)[enumerator nextObject]) { NSMutableArray *myArray = [[NSMutableArray alloc] init]; [myArray AddObject:((NSDictionary*)[enumerator nextObject])]; } 

Puede crear una jerarquía de puntos de datos. Por ejemplo, si desea obtener la matriz interna de un objeto JSON, puede acceder utilizando:

 NSArrray *objectArray = jsonObject[@"array"][@"2"][@"array"]; 

O bien, puedes hacer algo similar. Por ejemplo, en la API de Yelp, se le proporciona un JSON de una empresa. Al colocar estos negocios en una matriz, puede acceder a diferentes elementos del objeto haciendo:

 NSString *businessLocation = [businessArray objectAtIndex: indexOfBusinessInArray][@"location"][@"display_address"]; 

cómo almacenar esta información en NSMUtableArray ??

 while (item = (NSDictionary*)[enumerator nextObject]) { NSLog(@"clientId = %@", [item objectForKey:@"clientId"]);//this NSLog(@"clientName = %@",[item objectForKey:@"clientName"]);//this NSLog(@"job = %@", [item objectForKey:@"job"]);//this }