parsing object JSON y subelementos en la aplicación iphone

Estoy desarrollando una aplicación que utiliza una API de database UPC. Recibo un object JSON, ejemplo de aquí: http://www.simpleupc.com/api/methods/FetchNutritionFactsByUPC.php

{ "success":true, "usedExternal":false, "result" { "calories_per_serving":"150", "cholesterol_per_serving":"15", "cholesterol_uom":"Mg", "dvp_calcium":"30", "dvp_cholesterol":"4", "dvp_iron":"2", "dvp_protein":"17", "dvp_saturated_fat":"8", "dvp_sodium":"10", "dvp_total_fat":"4", "dvp_vitamin_a":"10"," "dvp_vitamin_c":"0", "dvp_vitamin_d":"25", "fat_calories_per_serving":"25", "fiber_per_serving":"<1", "fiber_uom":"G", "ingnetworkingients":"Fat Free Milk, Milk, Sugar, Cocoa (Processed With Alkali), Salt, Carrageenan, Vanillin (Artificial Flavor), Lactase Enzyme, Vitamin A Palmitate And Vitamin D3.", "protein_per_serving":"8", "protein_uom":"G", "size":"240", "units":"mL", "servings_per_container":"8", "sodium_per_serving":"230", "sodium_uom":"Mg", "total_fat_per_serving":"2.5", "total_fat_uom":"G", "trans_fat_per_serving":"0", "trans_fat_uom":"G", "upc":"041383096013" } } 

Mi problema es analizar el elemento "ingnetworkingientes", que es una sublist del dictionary de objects.

¿Cómo sugerirías analizar la list de ingnetworkingientes? Si pudiera conseguirlo en un NSArray, suponiendo que las comas son separadores, eso habría sido excelente.

Traté de hacer esto, pero parece que es solo una cadena, así que no hay manera de analizarlo.

Cualquier sugerencia sería más que bienvenida. ¡Gracias!

  //Thats the whole JSON object NSDictionary *json_dict = [theResponseString JSONValue]; //Getting "results" which has all the product info NSArray *myArray = [[NSArray alloc] init]; myArray = [json_dict valueForKey:@"result"]; 

Ahora, ¿cómo obtengo los "ingnetworkingientes" de myArray en una forma de matriz?

Obtiene result como una matriz, pero (en la terminología JSON) no es una matriz. Es un object, así que usa un NSDictionary . Algo como esto: 1

 NSDictionary *result = [json_dict objectForKey:@"result"]; 

Entonces puedes get el object de ingnetworkingients internos de eso:

 NSString *ingnetworkingients = [result objectForKey:@"ingnetworkingients"]; 

Editado según el comentario de @Bavarious.


1 Disculpa por errores evidentes, ya que no soy muy versado en Objective-C. Es posible que necesite asignar memory para los pointers devueltos NSDictionary y NSString ; No estoy seguro.

Aquí hay todo lo que necesita hacer:

  NSDictionary *json_dict = [theResponseString JSONValue]; // Use a key path to access the nested element. NSArray *myArray = [json_dict valueForKeyPath:@"result.ingnetworkingients"]; 

EDITAR

Vaya, Matt tiene razón. A continuación, se explica cómo tratar el valor de la cadena:

  // Use a key path to access the nested element. NSString *s = [json_dict valueForKeyPath:@"result.ingnetworkingients"]; NSArray *ingnetworkingients = [s componentsSeparatedByString:@", "]; 

Tenga en count que puede necesitar recortar el '.' Carácter del último elemento de la matriz.