Добавление 2 ключевых значений в список из объекта JSON - PullRequest
0 голосов
/ 03 марта 2011

Я хочу добавить 2 значения ключа из объекта JSON в мой список в приложении для iPhone.Ниже приведен мой код для этого,

SBJsonParser *jsonParser = [[[SBJsonParser alloc] init] autorelease];
    NSString *jsonString=[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://test/json/json_data.php"]];

    id response = [jsonParser objectWithString:jsonString error:NULL];

    NSDictionary *feed = (NSDictionary *)response;
    list = (NSArray *)[feed valueForKey:@"fname"];

вышеупомянутый код правильно отображает значение из fname, но что мне делать, если я хочу добавить к нему lname.например, мой объект [{"fname": "Bill", "lname": "Jones"}, {"fname": "John", "lname": "Jacobs"}] я хочу отображать имена как BillДжонс, Джон Джейкобс и так далее в списке.В настоящее время он отображает только Билла, Джона .. Я пытался сделать что-то вроде @ "fname" @lname, но это не сработает .. Может кто-нибудь, пожалуйста, помогите мне ..

1 Ответ

1 голос
/ 03 марта 2011

Замечание: ответ от анализатора JSON - это не словарь, а массив с заданной строкой. Ваш код работает, потому что -valueForKey: - это то, на что будет отвечать массив. Массив отправляет -valueforKey: каждому элементу и строит массив из ответов.

Есть два способа сделать то, что вы хотите (по крайней мере)

  1. Итерация по массиву явно

    NSMutableArray* list = [[NSMutableArray alloc] init];
    for (id anObject in response)
    {
        [list addObject: [NSString stringWithFormat: @"%@ %@", 
                                                     [anObject objectForKey: @"fName"], 
                                                     [anObject objectForKey: @"lname"]]];
    }
    
  2. Добавить категорию в NSDictionary

    @interface NSDictionary(FullName)
    -(NSString*) fullName;
    @end
    
    @implementation NSDictionary(FullName)
    
    -(NSString*) fullName
    {
        return [NSString stringWithFormat: @"%@ %@", 
                                           [self objectForKey: @"fName"], 
                                           [self objectForKey: @"lname"]];
    }
    
    @end
    

    Тогда ваш существующий код изменится на

    list = (NSArray *)[feed valueForKey:@"fullName"];
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...