2012-07-03 25 views
1

我知道这是一个愚蠢的问题,但我很了解如何做到这一点。从这个链接the requested link是可能返回json数据与NSURLconnection?我希望有人检查这个链接,并告诉我是否可能,因为我是这个新东西。NSURLconnection和json

编辑:

我试着用NSJSONSerialization

- (void)viewDidLoad 
{ 
    NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.goalzz.com/main.aspx?region=-1&area=6&update=true"]]; 
    connectionData = [[NSURLConnection alloc]initWithRequest:req delegate:self]; 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 
} 
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
    Data = [[NSMutableData alloc] init]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [Data appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
NSError *jsonParsingError = nil; 
id object = [NSJSONSerialization JSONObjectWithData:Data options:0 error:&jsonParsingError]; 

if (jsonParsingError) { 
    NSLog(@"JSON ERROR: %@", [jsonParsingError localizedDescription]); 
} else { 
    NSLog(@"OBJECT: %@", [object class]); 
} 
} 

,我在控制台收到此错误信息:

JSON错误:操作无法完成。 (可可错误3840.)

+0

首先,该URL不返回JSON。其次,NSURLConnection不提供内置的JSON解析器,因此您必须为此使用第三方库。 [TouchJSON](https://github.com/TouchCode/TouchJSON)是一种选择。 –

+0

谢谢@Anton Holmquist.so与ToushJSON我可以检索数据解析吗? – adellam

+0

不需要。想想获取数据并将其解析为两个单独的任务。首先使用NSURLConnection或任何其他请求库来获取它,然后使用TouchJSON或任何其他解析库来解析它。 –

回答

10

正如上面的评论所示,该链接不返回JSON。但是,假设你有这样的链接,你可以使用NSJSONSerialization类JSON数据解析成Objective-C类:

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40010946

与NSURLConnection的结合这一点,你可以做你问什么。下面是通过对实施NSURLConnection的散步:

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html#//apple_ref/doc/uid/20001836-BAJEAIEE

而且这里有你需要什么样的轮廓。显然这是不工作的代码:

- (void)downloadJSONFromURL { 
    NSURLRequest *request = .... 
    NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self]; 
    // ... 
} 

NSMutableData *urlData; 

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 
    urlData = [[NSMutableData alloc] init]; 
} 

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [urlData appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    NSError *jsonParsingError = nil; 
    id object = [NSJSONSerialization JSONObjectWithData:urlData options:0 error:&jsonParsingError]; 

    if (jsonParsingError) { 
     DLog(@"JSON ERROR: %@", [jsonParsingError localizedDescription]); 
    } else { 
     DLog(@"OBJECT: %@", [object class]); 
    } 
} 
+0

谢谢@Chris H我会试试这个。 – adellam