Разбор NSString как JSON

Я прочитал несколько форумов, но, похоже, не смог выполнить эту простую задачу. У меня есть вид в Xcode, который указывает на скрипт PHP и сохраняет результаты в виде NSString ниже:

[{ "ID": "16", "имя": "Боб", "возраст": "37"}]

У меня возникла проблема с разбором этого NSString. Вот как я получаю содержимое NSString:

NSString *strURL = [NSString stringWithFormat:@"http://www.website.com/json.php? id=%@",userId]; // to execute php code NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]]; // to receive the returend value NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding]; 

Как преобразовать результат (strResult) в JSON и удалить из него объекты? Я бы предположил, что это что-то вроде ниже, но я знаю, что мне что-то не хватает

 NSString *name = [objectForKey:@"name"]; NSString *age = [objectForKey:@"age"]; 

Любая помощь будет большой. Спасибо!

используйте класс NSJSONSerialization, чтобы прочитать его

 id jsonData = [string dataUsingEncoding:NSUTF8StringEncoding]; //if input is NSString id readJsonDictOrArrayDependingOnJson = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil]; 

в твоем случае

 NSArray *readJsonArray = [NSJSONSerialization JSONObjectWithData:dataURL options:0 error:nil]; NSDictionary *element1 = readJsonArray[0]; //old style: [readJsonArray objectAtIndex:0] NSString *name = element1[@"name"]; //old style [element1 objectForKey:@"name"] NSString *age = element1[@"age"]; //old style [element1 objectForKey:@"age"] 

Попробуй это….

 NSString * strResult = [[NSString alloc] initWithData:responseMutableData encoding:NSUTF8StringEncoding]; SBJSON *jsonParser = [[SBJSON alloc]init]; if([[jsonParser objectWithString:strResult] isKindOfClass:[NSArray class]]) { NSArray *jsonArr=[jsonParser objectWithString: strResult]; NSDictionary *firstDictonary = [jsonArr objectAtIndex:0]; NSString *name = [firstDictonary valueForKey:@"name"]; NSString *age = [firstDictonary valueForKey:@"age"]; } 

Если вы ориентируетесь на iOS 5 и выше, просто используйте NSJSONSerialization

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html

Если вы ориентируетесь ниже IOS 5, используйте парсер JSON, подобный этому: http://stig.github.com/json-framework/

И просто вызовите метод JSONValue (или эквивалентный) в строке JSON:

 NSDictionary *dict= [strResult JSONValue]; NSString *name = [dict objectForKey:@"name"]; NSString *age = [dict objectForKey:@"age"]; 

Кстати, ваша строка JSON выглядит как массив, и вы не можете использовать objectForKey для получения объектов из NSArray . У вас есть два варианта: измените свой ответ строки JSON как словарь или используйте objectAtIndex для получения объектов.