美文网首页
IOS开发 JSON数据解析

IOS开发 JSON数据解析

作者: 奔跑的小小鱼 | 来源:发表于2017-06-10 00:43 被阅读400次

    本节学习内容:

    1.json 数据的定义

    2.json 数据的解析方法

    3.json数据解析实践

    SBJsonParser: JSON数据解析类

    objectWithString:jsonString:解析字符串数据

    NSJSONSerialization: ios JSON解析类

    JSONObjectWithData:通过二进制解析数据


    导入DouBan.json文件

    【ViewController.h】

    #import<UIKit/UIKit.h>

    @interface ViewController:UIViewController

    //数据视图代理协议

    <UITableViewDataSource,UITablViewDalegate>{

    //数据视图定议

    UITableView* _tableView;

    NSMutableArray* _arrayBooks;

    @end

    【viewController.m】

    #import"viewController.h"

    #import"BookModel.h"

    @interface ViewController()

    @end

    @implementation ViewController

    -(void)viewDidLoad{

    [super viewDidLoad];

    //创建数据视图

    _tableView=[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrounped];

    _tableView.delegate=self;

    _tableView.dataSource=self;

    [self.view addSubview:_tableView];

    //获取组数

    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

    returen 1;

    }

    //获取每组的行数

    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{

    return _arrayBooks.count;

    }

    -(UITableViewCell*)tableView:(UITableView *)tableView celllForRowAtIndexPath:(NSIndexPath *)indexPath{

    NSString* strID=@"ID";

    UITableViewCell* cell=[_tableView dequeueReusableCellWithIdentifier:strId];

    if(cell == nil){

    //创建数据源单元格对象

    cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:strID];

    }

    //获取对应的图书数据

    BookMode* book=[_arrayBooks objectAtIndex:indexPath.row];

    //将数名赋值给文本label

    cell.textLable.text=book.mBookName;

    cell.detailTextLabel.text=book.mPrice;

    return cell;

    }

    //解析数据

    -(void)parseData{

    //获取json文件本地路径

    NSString* path=[[NSBundle mainBundle]pathForResource:@"DouBan" ofType:@"json"];

    //加载json文件为二进制文件

    NSData* data=[NSData dataWithContentsOfFile:path];

    //字典对象解析,将json数据解析为字典格式

    NSDictionary* dicRoot=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

    //判断解析是否为字典

    if([dicRoot isKingOfClass:[NSDictionar class]]){

    //开始解析数据

    _arrayBooks=[[NSMutableArray alloc]init];

    //解析根数据

    NSArray* arrayEnter=[dicRoot objectForKey:@"entry"];

    //遍历数组对象

    for(init i=0;i<arrayEnter.count;i++){

    NSDictionary* dicBook=[arrayEnter objectAtIndex:i];

    //获取书籍名字对象

    NSDictionary*  bookNmeDic=[dicRoot objectForKey:@"title"];

    NSString* bookName=[bookNameDic bojectForKey:@"$t"];

    BookModel* book=[[BookModel alloc]init];

    book.mBookName=bookName;

    //数组对象

    NSArray* arrAttr=[dicBook objectForKey:@"db:attribute"];

    for(int i=0;i<arrAttr.count;i++){

    NSDictionary* dic=[arrAttr objectAtIndex:i];

    NSString* strNAme=[dic objectForKey:@"@name"];

    if([strName isEqualToString:@"price")]==YES){

    NSString* price=[dic objectForKey:@"st"];

    book.mPrice=price;

    }else if(([strName isEqualToString:@"publisher"]==YES){

    book.mPublisher=pub;

    }

    }

    //添加到数组中

    [_arrayBooks addObject:book];

    }

    }

    //更新数据视图数据

    [_tableView reloadData]


    【BookModel.h】

    #import<Foundation/Foundation>

    //书籍的数据模型

    @interface BookMode:NSObject{

    //书籍名称

    NSString* _bookName;

    //出版社名称

    NSString* _publisher;

    //书籍价格

    NSString* _price;

    //作者数组

    NSMutableArray* _authorArray;

    }

    @property(retain,nonatomic) NSString* mBookName;

    @property(retain,nonatomic) NSString* mPublisher;

    @property(retain,nonatomic) NSString* mPrice;

    @property(retain,nonatomic) NSString* mAuthorArray;

    @end

    【BookModel.m】

    #import "BookModel.h"

    @implementation BookModel

    @syntesize mBookName=_bookName;

    @syntesize mAuthorArray=_mAuthorArray;

    @syntesize mPrice=_mPrice;

    @syntesize mPublisher=_mPublisher;

    @end;

    运行结果

    相关文章

      网友评论

          本文标题:IOS开发 JSON数据解析

          本文链接:https://www.haomeiwen.com/subject/zurafxtx.html