大きなデータベースを処理できるようにJSONデータを解析する方法を学習しようとしています。私はウェブサイトにログインするコードを書いた。JSONパーサがNullを返す
私は成功したログイン要求から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"}]
と私は解析するが、それは名前のための私のNSLog
から
-(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);
}
に結果をそれを解析doesntの次のコードを使用するには、NULL
です
どこが問題なのですか?そのようなデータを解析するにはどうすればよいですか?多くの行については、ローカルのFMDBデータベースに保存できますiPhoneで
------------------------------ EDIT ------------ -------------------------------------------------- -
実際の問題は応答でしたJSON文字列のサーバーからの文字列の開始、jsonパーサーは二重引用符間の解析のみを行いましたので、私は文字列からエコーを取り除き、新しい文字列を解析する必要がありました。
とビンゴ!
//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を取得します –