2015-06-19 3 views
1

У меня есть конкретное имя пользователя (NSString *), и я делаю запрос на api (через sendSynchronousRequest), чтобы получить всех пользователей. Данные, собранные у этой схема:Уточнить конкретный идентификатор от ответа Json от api (цель-c)

{"users": 
    [{"id":3,"username":"Max","email":"[email protected]","rank":0,"level":0,"score":{},"first_name":null,"last_name":null,"date_birth":null}, 
    {"id":4,"username":"Guest","email":"[email protected]","rank":0,"level":0,"score":{},"first_name":null,"last_name":null,"date_birth":null}, 
    {"id":5,"username":"Root","email":"[email protected]","rank":0,"level":0,"score":{},"first_name":null,"last_name":null,"date_birth":null}, 
    {"id":6,"username":"test_user","email":"[email protected]","rank":0,"level":0,"score":{},"first_name":null,"last_name":null,"date_birth":null} 
]} 

, и я заинтересован в получении значения идентификатора для конкретного пользователя (например, «4» для «гостя»), чтобы использовать его в других запросах.

Я пытался следовать how to parse array of objects using json for iphone, но есть некоторые проблемы, связанные с форматом { "ххх": [{...}, {...}, ..]}

Любая помощь будет оценена. Thx для вашего времени.

ответ

1

Сначала разобрать строку JSON и поместить его в NSDictionary и извлечь NSArray пользователей затем использовать NSPredicate, чтобы получить пользователь вы хотите

NSDictionary *usersDictionary = [jsonString JSONValue]; 
NSArray *users = [usersDictionary valueForKey:@"users"]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username = %@", userName]; 
NSDictionary *user = [[users filterUsingPredicate:predicate] firstObject]; 
NSNumber *userId = [user objectForKey:@"id"]; 
+0

Спасибо большое, это не сработало в первый, я изменил всего несколько вещей: NSDictionary * usersDictionary = [NSJSONSerialization JSONObjectWithData: параметры данных: kNilOptions error: & error]; NSArray * users = [usersDictionary valueForKey: @ "users"]; NSPredicate * predicate = [предикат NSPredicateWithFormat: @ "username =% @", self.Username]; NSDictionary * user = [[users filtersArrayUsingPredicate: предикат] firstObject]; NSNumber * userId = [user objectForKey: @ "id"]; И это работает! Еще раз спасибо за этот быстрый ответ, это экономит мой день! – Pierre

+0

@Pierre вас приветствуют :) –

Смежные вопросы