JSON解析

#import "ViewController.h"

#import "AFNetworking.h"

@interface ViewController ()

{

? ? NSDictionary *_dic;

}

@property(nonatomic,strong)UITableView *Mytableview;

@end

#define JSON_URL @"http://127.0.0.1/1602C1.json"

#define XML_URL @"http://127.0.0.1/1602C1.xml"

@implementation ViewController

- (void)viewDidLoad

{

? ? [super viewDidLoad];


? ? //====二進制解析器======


? ? //初始化AF對象? (注意初始化解析器)

? ? AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];


? ? // AFXMLParserResponseSerializer === SAX解析

? ? // AFJSONResponseSerializer === JSON解析? 類型(jsonkit)

? ? // AFHTTPResponseSerializer ==二進制解析==NsData類型


? ? //設置解析類型

? ? manager.responseSerializer = [[AFJSONResponseSerializer alloc]init];



//get請求? 1(字符串地址)2(是否需要傳參 {字典})3請求成功后自動回調(diào) 4(請求失敗自動回調(diào))

? ? [manager GET:JSON_URLparameters:nilsuccess:^(AFHTTPRequestOperation *operation,idresponseObject) {


?? ? ? ? //=====二進制解析我器 之JSON解析======


//? ? ? ? //如果是二進制解析器 則responseObject是NSData類型

//? ? ? ? NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];

//? ? ? ? NSLog(@"===%@",dic);

//

//



? ? ? ? //=====二進制解析我器 之SAX解析======


//? ? ? ? NSXMLParser *parser = [[NSXMLParser alloc]initWithData:responseObject];

//

//? ? ? ? parser.delegate = self;

//

//? ? ? ? [parser parse];

//



?? ? ? ? ? //json解析器


? ? ? ? //類型轉換? 將id轉換為字典

? ? ? ? _dic = (NSDictionary *)responseObject;

? ? ? ? NSLog(@"%@",_dic);


? ? ? ? [self.Mytableview reloadData];


//? ? ? ? //sax解析器

//? ? ? ? NSXMLParser *parser = (NSXMLParser *)responseObject;

//? ? ? ? parser.delegate = self;

//? ? ? ? [parser parse];

//


? ? } failure:^(AFHTTPRequestOperation *operation, NSError *error) {


? ? }];



? ? [self.view addSubview:self.Mytableview];


}

-(UITableView*)Mytableview

{

? ? if (!_Mytableview)

? ? {

? ? ? ? _Mytableview = [[UITableView alloc]initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStyleGrouped];

? ? ? ? _Mytableview.delegate=self;

? ? ? ? _Mytableview.dataSource=self;

? ? }

? ? return _Mytableview;

}

-(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView

{

? ? return _dic.allKeys.count;


}

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

{

? ? NSString*key = [_dic.allKeysobjectAtIndex:section];

? ? return [[_dic objectForKey:key]count];

}

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath

{

? ? staticNSString*s =@"asdfghj";

? ? UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:s];

? ? if(!cell)

? ? {

? ? ? ? cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:s];

? ? }

? ? NSString*key = [_dic.allKeysobjectAtIndex:indexPath.section];

? ? cell.textLabel.text = [[[_dic objectForKey:key]objectAtIndex:indexPath.row]objectForKey:@"name"];

? ? cell.detailTextLabel.text = [[[_dic objectForKey:key]objectAtIndex:indexPath.row]objectForKey:@"like"];

? ? returncell;

}

@end

//==================================

.h里

#import

@interface BaseViewController : UIViewController

// 創(chuàng)建表格屬性

@property (nonatomic,strong) UITableView *table;

// 創(chuàng)建數(shù)據(jù)數(shù)組

@property (nonatomic,strong) NSMutableArray *dataArray;

#pragma mark - 賦值根控制器

- (void)setTabbarVc:(UITabBarController*)tVc;

// 添加表格的方法

- (UITableView*)addTableView;

// 添加內(nèi)容數(shù)組的方法

- (NSMutableArray*)addDataArray;

// 添加導航條左側圖片按鈕

- (void)setleftNavgationItem;

// 添加導航條左側返回按鈕

- (void)setLeftBack;


.m里

#import "BaseViewController.h"

@interface BaseViewController ()

{

? ? UITabBarController *_tabbarVc;

}

@end

@implementationBaseViewController

- (void)viewDidLoad {

? ? [super viewDidLoad];

//? ? // 添加滑動效果

//? ? UIButton *leftItemBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 40, 40)];

//? ? // 添加點擊事件

//? ? [leftItemBtn addTarget:self action:@selector(leftClick:) forControlEvents:UIControlEventTouchUpInside];

//? ? // 設置裁剪

//? ? leftItemBtn.layer.cornerRadius = 20;

//? ? leftItemBtn.layer.masksToBounds = YES;

//? ? // 設置背景圖片

//? ? [leftItemBtn setBackgroundImage:[UIImage imageNamed:@"nav_itme_left"] forState:UIControlStateNormal];

//? ?

////? ? UIImage *leftItemImg = [UIImage imageNamed:@"nav_itme_left"];

//? ? self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:leftItemBtn];

}

// 設置表格set方法

- (UITableView*)addTableView{

? ? if(!_table) {

? ? ? ? // 初始化

? ? ? ? _table = [[UITableView alloc]initWithFrame:SCREEN_BOUNDS style:UITableViewStylePlain];

? ? ? ? // 設置代理

? ? ? ? _table.delegate=self;

? ? ? ? _table.dataSource=self;

? ? ? ? // 添加到主視圖

? ? ? ? [self.viewaddSubview:_table];

? ? }

? ? return _table;

}

// 設置內(nèi)容set方法

- (NSMutableArray*)addDataArray{

? ? if (!_dataArray) {

? ? ? ? _dataArray= [NSMutableArrayarray];

? ? }

? ? return _dataArray;

}

// 設置左側按鈕

- (void)setleftNavgationItem{

? ? // 添加滑動效果

? ? UIButton*leftItemBtn = [[UIButtonalloc]initWithFrame:CGRectMake(0,0,40,40)];

? ? // 添加點擊事件

? ? [leftItemBtnaddTarget:self action:@selector(leftClick:) forControlEvents:UIControlEventTouchUpInside];

? ? // 設置裁剪

? ? leftItemBtn.layer.cornerRadius=20;

? ? leftItemBtn.layer.masksToBounds=YES;

? ? // 設置背景圖片

? ? [leftItemBtnsetBackgroundImage:[UIImage imageNamed:@"nav_itme_left"] forState:UIControlStateNormal];


? ? //? ? UIImage *leftItemImg = [UIImage imageNamed:@"nav_itme_left"];

? ? self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:leftItemBtn];

}

#pragma mark - 導航左側按鈕方法

- (void)leftClick:(UIBarButtonItem*)item{

? ? if(_tabbarVc.view.frame.origin.x==0) {

? ? ? ? // 添加動畫并且zuo'hu

? ? ? ? [UIView animateWithDuration:1.0 animations:^{

? ? ? ? ? ? self->_tabbarVc.view.frame = CGRectMake([UIScreen mainScreen].bounds.size.width*0.8,0,[UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);

? ? ? ? }];

? ? }else{

? ? ? ? // 回到原來的位置

? ? ? ? [UIView animateWithDuration:1.0 animations:^{

? ? ? ? ? ? self->_tabbarVc.view.frame = CGRectMake(0.0,0.0,[UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);

? ? ? ? }];

? ? }

}

#pragma mark - 賦值根控制器

- (void)setTabbarVc:(UITabBarController*)tVc{

? ? _tabbarVc= tVc;

}

// 添加導航條左側返回按鈕

- (void)setLeftBack{

? ? // 添加滑動效果

? ? UIButton*leftItemBtn = [[UIButtonalloc]initWithFrame:CGRectMake(0,0,40,40)];

? ? // 添加點擊事件

? ? [leftItemBtnaddTarget:self action:@selector(leftBackClick) forControlEvents:UIControlEventTouchUpInside];

? ? // 設置裁剪

? ? leftItemBtn.layer.cornerRadius=20;

? ? leftItemBtn.layer.masksToBounds=YES;

? ? // 設置背景圖片

? ? [leftItemBtnsetBackgroundImage:[UIImage imageNamed:@"login_navigationItem_return"] forState:UIControlStateNormal];

? ? self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:leftItemBtn];

? ? self.navigationController.navigationBar.barTintColor = [UIColor blackColor];

}

- (void)leftBackClick{

? ? [self dismissViewControllerAnimated:YES completion:nil];

}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容