JSONModel使用

定义

JSONModel 是一个能够快速巧妙的创建数据模型的库
一个接口用一个Model即可,但是要记得在.m中实现创建的多个model

记得导入第三方库 JSONModel

使用

一个例子说明:
要解析的大概是这样

{
      date: "20140523",
      stories: [
          {
              title: "中国古代家具发展到今天有两个高峰,一个两宋一个明末(多图)",
              ga_prefix: "052321",
              images: [
                  "http://p1.zhimg.com/45/b9/45b9f057fc1957ed2c946814342c0f02.jpg"
              ],
              type: 0,
              id: 3930445
          },
      ...
      ],
      top_stories: [
          {
              title: "商场和很多人家里,竹制家具越来越多(多图)",
              image: "http://p2.zhimg.com/9a/15/9a1570bb9e5fa53ae9fb9269a56ee019.jpg",
              ga_prefix: "052315",
              type: 0,
              id: 3930883
          },
      ...
      ]
  }

下面为解析代码
首先创建一个Model类
Model.h

#import "JSONModel.h"

@interface StoriesModel: JSONModel
@property (nonatomic, copy)NSString *title;
@property (nonatomic, copy)NSString *ga_prefix;
@property (nonatomic, copy)NSArray *images;
@property (nonatomic, copy)NSString *multipic;
@property (nonatomic, copy)NSString *id;
@end

@interface TopStoriesModel: JSONModel
@property (nonatomic, copy)NSString *image;
@property (nonatomic, copy)NSString *type;
@property (nonatomic, copy)NSString *id;
@property (nonatomic, copy)NSString *ga_prefix;
@property (nonatomic, copy)NSString *title;
@end

@interface Model : JSONModel

@property (nonatomic, copy)NSString *date;
@property (nonatomic, copy)NSArray<StoriesModel*> *stories;
@property (nonatomic, copy)NSArray<TopStoriesModel*> *top_stories;

@end

Model.m

#import "Model.h"

@implementation Model

+ (BOOL)propertyIsOptional:(NSString *)propertyName
{
    return YES;
}
@end
@implementation StoriesModel

+ (BOOL)propertyIsOptional:(NSString *)propertyName
{
    return YES;
}
@end
@implementation TopStoriesModel

然后在要使用的地方(比如:ViewController)

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    //确定请求路径
    NSString *urlString = @"https://news-at.zhihu.com/api/4/news/latest";
    //在使用url的时候,如果字符串中有中文,那么要对中文进行转码操作
    urlString = [urlString stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    NSURL *url = [NSURL URLWithString:urlString];
    //创建请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    //创建会话对象
    NSURLSession *sharedSession = [NSURLSession sharedSession];
    //根据会话对象来创建请求task任务
    NSURLSessionDataTask *dataTask = [sharedSession dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if(data && (error == nil)){
            //网络访问成功,解析数据
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
            self->_titleMutableArray = [NSMutableArray array];
            self->_imagesMutableArray = [NSMutableArray array];
            self->_hourlyModel = [[Model alloc]initWithDictionary:dict error:nil];
            for(int i = 0;i < self->_hourlyModel.stories.count;i++){
                StoriesModel *storiesModel = [[StoriesModel alloc]initWithDictionary:dict[@"stories"][i] error:nil];
                NSLog(@"%@", storiesModel.title);
                [self.titleMutableArray addObject:storiesModel.title];
               //这里将数据放进数组以便后续使用 [self.imagesMutableArray addObject:storiesModel.images[0]];
            }
            NSLog(@"1---%@---", self.titleMutableArray);
            for(int i = 0;i < self->_hourlyModel. top_stories.count;i++){
                TopStoriesModel *topStoriesModel = [[TopStoriesModel alloc]initWithDictionary:dict[@"top_stories"][i] error:nil];
                 NSLog(@"%@", topStoriesModel);
            }
        }
        else{
            //网络访问失败
            NSLog(@"error = %@", error);
        }
    } ];
    //执行发送请求任务
    [dataTask resume];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值