Вопрос по parsing, ios, json – JSON-парсер возвращает Null

1

Я пытаюсь научиться анализировать данные JSON, чтобы обрабатывать большие базы данных. Я написал код для входа на сайт.

У меня есть следующие данные JSON из успешного запроса входа в систему:

JSON string : correct username and password [{"user_id":"7","first_name":"dada","last_name":"Kara","e_mail":"[email protected]","fullname":"Dada Kara","forum_username":"ycan"}]

и я использую следующий код для разбора, но он не разбирает его

-(IBAction)loginButton:(id)sender{

    NSString *username = usernameTextfield.text; 
    NSString *password = passwordTextfield.text;

    NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:[NSURL URLWithString:kPostUrl]];
    [request setHTTPMethod:@"POST"];

    NSString *post =[[NSString alloc] initWithFormat:@"e_mail=%@&password=%@", username, password];
    [request setHTTPBody:[post dataUsingEncoding:NSASCIIStringEncoding]];

    NSURLResponse *response;
    NSError *err;

    NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];
    //NSString *responseStr = [NSString stringWithUTF8String:[responseData bytes]];
    //NSLog(@"Response : %@", responseStr);

    NSString *json_string = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSLog(@"JSON string : %@", json_string);

    SBJsonParser *parser = [[SBJsonParser alloc] init];
    NSDictionary *responseObj = [parser objectWithString:json_string error:nil];
    NSArray *name = [responseObj objectForKey:@"first_name"];

    NSLog(@"Name : %@", name);
}

Результат от моегоNSLog для имениNULL

В чем проблема и как я могу проанализировать такие данные, чтобы, когда дело доходит до множества строк, я мог сохранить их в локальной базе данных FMDB на iphone

------------------------------EDIT---------------------------------------------------------------

Фактическая проблема заключалась в том, что ответная JSON-строка с сервера включала эхо-начало строки, json-анализатор анализировал только двойные кавычки & quot; & quot ;, так что все, что мне было нужно, это обрезать эхо-строку и анализировать новую строку.

и бинго!

//trim in coming echo
    NSString *newString1 = [json_string stringByReplacingOccurrencesOfString:@"correct username and password\n" withString:@""];



    SBJsonParser *parser = [[SBJsonParser alloc] init];

    NSArray *responseObj = [parser objectWithString:newString1 error:nil];

    NSDictionary *dataDict = [responseObj objectAtIndex:0];

    NSString *userID = [dataDict objectForKey:@"user_id"];

    NSLog(@"user_id: %@", userID);

вывод: user_id: 7

Строка JSON - это массив, содержащий словарь, поэтому сначала извлеките словарь, а затем проанализируйте его. MByD
я предполагаю, что ответ ниже - тот, который вы упомянули, но я все еще получаю NULL u.gen

Ваш Ответ

2   ответа
2
 SBJsonParser *parser = [[SBJsonParser alloc] init];

 NSArray *responseObj = [parser objectWithString:json_string error:nil];

NSDictionary *dataDict = [responseObj objectAtIndex:0];

NSString *name = [dataDict objectForKey:@"first_name"];

рвера? Если да, то попробуйте другую кодировку.

это все еще дает мне ноль u.gen
Смотрите мои обновленные ответы
NSString * json_string = [[NSString alloc] initWithData: кодировка responseData: некоторая другая кодировка]; как NSASCIIStringEncoding & amp; Другой
даNSLog(@"JSON string : %@", json_string); печатьJSON string : correct username and password [{"user_id":"7","first_name":"dada","last_name":"Kara","e_mail":"[email protected]","fullname":"Dada Kara","forum_username":"ycan"}]  что вы подразумеваете под другой кодировкой? u.gen
проблема в том, что моя строка json начинается с правильного имени пользователя и пароля, в то время как анализатор json анализирует только двойные кавычки & quot; & quot; мне нужно найти способ запуска парсера после правильной строки имени пользователя и пароля u.gen
0

как Objectify (15 долл. США) или JSON Accelerator (0,99 долл. США) в магазине Mac App, чтобы автоматически генерировать для вас модели данных, которые сделают эту модель такой же простой, как object.firstName.

Похожие вопросы