Ios NSURLSession:从nsurresponse获取Json

Ios NSURLSession:从nsurresponse获取Json,ios,objective-c,json,Ios,Objective C,Json,我试图找出如何从http响应解析JSON。目前,我正在使用NSURLSession任务发送post请求,并获得如下响应和结果: NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defa

我试图找出如何从http响应解析JSON。目前,我正在使用NSURLSession任务发送post请求,并获得如下响应和结果:

NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
     NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];

     NSURL * url = [NSURL URLWithString:@"http://mysite.org/mobile_app/studentregister.php"];
     NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url];
     NSString * params = [NSString stringWithFormat:@"username=%@&displayname=%@&password=%@&passwordc=%@&email=%@&teachercode=%@", username, displayname, password, passwordc, email, teacherCode];
     [urlRequest setHTTPMethod:@"POST"];
     [urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];

     NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest
     completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
     NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
     NSError *serializeError = nil;
     NSDictionary *jsonData = [NSJSONSerialization
                                   JSONObjectWithData:data
                                   options:NSJSONReadingMutableContainers
                                   error:&serializeError];

     NSLog(@"Response:%@ %@\n", response, error);
     if(error == nil)
     {
     NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
     NSLog(@"Data = %@",text);
     }

     }];
现在,当我运行请求并记录以下响应时:

{"userCharLimit":"Your username must be between 5 and 25 characters in length"}{"displaynameCharLim":"Your displayname must be between 5 and 25 characters in length"}{"passLimit":"Your password must be between 8 and 50 characters in length"}{"emailInvalid":"Not a valid email address"}{"teacherCodeLength":"Your teacher code is not 5 to 12 characters"}
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />

看看NSJSONSerialization类。你可以从你的URL连接中传递数据,并返回一个“基础对象”的“对象图”。在你的情况下,看起来你会得到一本字典


不过,更好的办法是使用AFN网络。它可以在Github或CocoaPods上使用,使所有这些都变得非常简单。

请注意,这是一个非常古老的答案,并且已经被最近的发展所取代。我不再推荐AFN网络。对于新开发,您应该使用Swift 4中内置的
Codable
协议
{"userCharLimit":"Your username must be between 5 and 25 characters in length"}{"displaynameCharLim":"Your displayname must be between 5 and 25 characters in length"}{"passLimit":"Your password must be between 8 and 50 characters in length"}{"emailInvalid":"Not a valid email address"}{"teacherCodeLength":"Your teacher code is not 5 to 12 characters"} in ios?