Parsing JSON 解析 JSON
第二部分我们要用到把 NSData 方法获取的 JSON 数据解析出来。这一步在 Swift 里需要一个第三方库才能快递便捷地完成,但是在 Objective-C 里我们很容易就解决这个问题了。
再接下来你就只要使用 printf() 把数据打印出来就可以了。
fetchCommitsForRepo 的第二部分是这样子的:
// decode the NSData into an array of dictionaries 把 NSData 数据放进数组里
NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:
0 error:&error];
// if there was an error, bail out 如果下载出现问题的话,就跳出来
if (error != nil) {
NSLog(@"Fatal error 2: %@", [error localizedDescription]);
exit(0); }
// loop through each dictionary in the array 循环数组
for (NSDictionary *entry in json) {
// pull interesting data into variables 把数据放进变量里
NSString *name = entry[@"commit"][@"author"][@"name"];
NSString *message = entry[@"commit"][@"message"];
// remove line breaks for easier reading 移除之前读取的内容
message = [message stringByReplacingOccurrencesOfString:@"\n"
withString:@" "];
// print it all out 打印
printf("%s: %s\n\n", [name
cStringUsingEncoding:NSUTF8StringEncoding], [message
cStringUsingEncoding:NSUTF8StringEncoding]);
}
在 Objective-C 里解析 JSON 代码是非常快的,并且代码很干净。
细心的你会发现,我在这边再次使用了 NSError 变量,而且给了错误信息一个专属它的数字,这对 debug 非常有帮助。因为我们不知道在获取数据的时候,到底会出现什么样严重的问题。