Разбор JSON в iOS приложении

0

Я работаю над iOS App, и я должен декодировать ответ json.

Данные ответа выглядят следующим образом:

[{"owner":"123456789","id":"1","liked":"0","unliked":"0","nickname":"jack","filename":"name_image.jpg","user":null,"image":null,"type":null}]

Это код в моем приложении:

//parse out the json data
NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];            
NSString *owner = [json valueForKey:@"owner"];      
NSLog(@"\n\nowner: %@", owner);

В журнале я вижу следующее:

owner: (
    3402379524
)

Как я могу удалить круглые скобки и получить правильное значение? Я тоже пытался использовать это:

NSDictionary *owner_image = [json objectForKey:@"owner"];   

но приложение аварийно завершает работу.

Теги:

2 ответа

4
Лучший ответ

У вас есть массив словаря, поэтому вам нужно сначала получить объект массива и после того, как вы сможете получить значение из словаря.

NSArray* json   = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSString *owner = json[0][@"owner"];  
NSLog(@"\n\nowner: %@", owner);

Чтобы лучше понять структуру, см. Следующий образ.

Изображение 174551

  • 1
    Я предлагаю использовать objectForKey вместо valueForKey: если вам не нужен KVC. Кроме того, зачем смешивать старый и новый синтаксис? Do json[0][@"owner"];
0
 NSDictionary *owner_image = [((NSDictionary *)[json objectForIndex:0]) objectForKey:@"owner"];  
  • 1
    К сведению - нет необходимости в приведении, и возвращаемое значение rhs не является NSDictionary , это - NSString (или, возможно, NSNumber ).
  • 0
    я получаю эту ошибку: нет видимого интерфейса для «NSDictionary» объявляет селектор «objectForIndex»
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню