TouchJSON是OC转换JSON的一个第三方类库,使用简单。在GitHub上可以轻松获取:TouchJSON

以下是简单的事例演示从douban movie请求JSON数据并转为字典对象后对控件赋值。

#import "ViewController.h"

#import "CJSONSerializer.h"

#import "CJSONDeserializer.h"

#import "NSDictionary_JSONExtensions.h"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<br>@interface ViewController ()
 
@property (weak, nonatomic) IBOutlet UITextView *textView;
 
@property (nonatomic, strong) NSMutableDictionary *dic;
 
@property (nonatomic, strong) NSString *text;
 
@end
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
 
 
- (IBAction)didClickTouchJSONButton:(id)sender {
    //GCD异步
    dispatch_queue_t q1 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
     
    dispatch_async(q1, ^{
        NSURL *url = [NSURL URLWithString:@"https://api.douban.com/v2/movie/subject/22265299"];
        NSString *jsonString = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];<br><br>        //直接转换,import CJSONDeserializer.h
        //self.dic = [[CJSONDeserializer deserializer] deserialize:[jsonString dataUsingEncoding:NSUTF8StringEncoding] error:nil];
        //如果使用下面扩展了NSDictionary的方法,请import NSDictionary_JSONExtensions.h
        self.dic = [NSDictionary dictionaryWithJSONString:jsonString error:nil];
        NSString *title = [self.dic objectForKey:@"original_title"];
        NSMutableArray *genresArray = [self.dic objectForKey:@"genres"];
        NSString *genres = [NSString stringWithFormat:@"%@/%@",[genresArray objectAtIndex:0],[genresArray objectAtIndex:1]];
        NSString *summary = [self.dic objectForKey:@"summary"];
        self.text = [NSString stringWithFormat:@"电影名称:%@\n体裁:%@\n剧情介绍:%@",title,genres,summary];
        //更新UI操作需要在主线程
        dispatch_async(dispatch_get_main_queue(), ^{
            self.textView.text = self.text;
        });
    });
}