JSON解析 实现界面 数据分离.

JSON

作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式

基于JavaScript的一个子集

易读性略差,编码手写难度大,数据量小

JSON格式取代了XML给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁琐复杂的数据节点查找中

JSON格式说明

对象

{}

格式 {key : value, key : value,...} 的键值对的结构

可以反序列化为OC中的NSDictionary

数组

[]

格式 ["java","javascript","vb",...]

可以反序列化为OC中的NSArray

提示

JSON的数据格式与OC中的快速包装方法非常类似

JSON的数据格式同样支持嵌套

解析服务器端返回JSON数据

从iOS 5开始,使用NSJSONSerialization对JSON解析

其他常见的三种JSON解析第三方库:

SBJson 因为API简单易用,可能还会有一些应用中留存

JSONKit JSONKit的开发者称:JSONKit的性能优于苹果

TouchJson

JSON的序列化和反序列化

反序列化

[NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];

序列化

[NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];

NSJSONReadingOptions

NSJSONReadingMutableContainers = 1,    根节点可变

NSJSONReadingMutableLeaves = 2,          节点可变

NSJSONReadingAllowFragments = 4,         根节点可以不是NSDictionary或者NSArray

//代码解析步骤

#import <Foundation/Foundation.h>

@interface Video : NSObject

@property (nonatomic, copy) NSNumber *videoId;

@property (nonatomic, copy) NSString *name;

@property (nonatomic, copy) NSNumber *length;

@property (nonatomic, copy) NSString *videoURL;

@property (nonatomic, copy) NSString *imageURL;

@property (nonatomic, copy) NSString *desc;

- (instancetype)initWithDict:(NSDictionary *)dict;

+ (instancetype)videoWithDict:(NSDictionary *)dict;

@end

#import "Video.h"

@implementation Video

- (instancetype)initWithDict:(NSDictionary *)dict

{

self = [super init];

if (self) {

[self setValuesForKeysWithDictionary:dict];

}

return self;

}

+ (instancetype)videoWithDict:(NSDictionary *)dict

{

return [[self alloc] initWithDict:dict];

}

@end

//解析步骤

#import "PLMJSONViewController.h"

#import "Video.h"

@interface PLMJSONViewController ()

@end

@implementation PLMJSONViewController

/** 重写父类的加载数据方法 */

- (void)loadData

{

NSLog(@"%s", __func__);

// 1. url

NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/videos.json"];

// 2. request

NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 3. 发送异步请求

[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

// data是一个json数据

// 对data进行反序列化,解析(很多时候我们解析出来的是字典)

NSArray *array = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];

// 建立视频的数组

NSMutableArray *arrayM = [NSMutableArray array];

for (NSDictionary *dict in array) {

[arrayM addObject:[Video videoWithDict:dict]];

}

// 刷新数据,更新UI

dispatch_async(dispatch_get_main_queue(), ^{

self.dataList = arrayM;

});

}];

}

@end

#import <UIKit/UIKit.h>

@interface PLMViewController : UITableViewController

@property (nonatomic, strong) NSArray *dataList;

/** 加载网络数据 */

- (void)loadData;

@end

#import "PLMViewController.h"

#import "Video.h"

@interface PLMViewController ()

@end

@implementation PLMViewController

/** 设置表格的数组数据 */

- (void)setDataList:(NSArray *)dataList

{

_dataList = dataList;

// 表格的数据源,绑定在dataList,当重新设置了dataList的内容,需要刷新表格

[self.tableView reloadData];

// 停止刷新控件

[self.refreshControl endRefreshing];

}

- (void)viewDidLoad

{

[super viewDidLoad];

// 加载网络数据

[self loadData];

}

- (IBAction)refresh

{

[self loadData];

}

- (void)loadData

{

// 此方法的具体实现在子类中

}

#pragma mark - 表格的数据源方法

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

{

return self.dataList.count;

}

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

{

static NSString *ID = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];

Video *v = self.dataList[indexPath.row];

cell.textLabel.text = v.name;

return cell;

}

@end

JSON解析 实现界面 数据分离.

时间: 2024-07-29 09:23:32

JSON解析 实现界面 数据分离.的相关文章

使用HttpClient+Json解析器爬取数据并存入数据库

一.题目要求 说明:这里我只展示爬取数据的代码,将可视化结果与统计数据结合,实时显示当前最新数据只需将这篇博客代码和我那篇使用Echarts可视化数据库数据结合即可 二.思路 同学思路:我的大部分同学思路是使用HttpClient+Jsoup获取并解析目标页面的数据,然后调用Dao层中的方法将数据筛选并存入数据库中 我的思路:我直接使用了一个网上的一个最新疫情数据Json的目标网页,然后使用HttpClient获取该Json格式数据,然后使用Json解析器将 数据分离,然后调用Dao层中的方法将

android json解析及简单例子(转载)

android json解析及简单例子 JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. – Json.org JSON Vs XML 1.JSON和XML的数据可读性基本相同 2.JSON和XML同样拥有丰富的解析手段 3.JSON相对于XML来讲,数据的体积小 4.JS

Android从服务端获取json解析显示在客户端上面

Android从服务端获取json解析显示在客户端上面 百度经验:jingyan.baidu.com 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Json数据的体积更加小,传输效率高,易解析,不过可读性不高; 因为这次要从服务器端得到Json数据,并且通过解析之后把解析后的数据显示在Android客户端中,首先部署服务器端代码(直接使用Jsp/Servlet): 构造的Json数据如下: [{"name":"张三",&

Go的json解析:Marshal与Unmarshal

简介Json(Javascript Object Nanotation)是一种数据交换格式,常用于前后端数据传输.任意一端将数据转换成json 字符串,另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等. go语言本身为我们提供了json的工具包”encoding/json”.更多的使用方式,可以参考:https://studygolang.com/articles/6742 实现Json Marshal:将数据编码成json字符串看一个简单的例子 type Stu

iOS之网络数据下载和JSON解析

iOS之网络数据下载和JSON解析 简介 在本文中笔者主要给大家介绍IOS如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载显示. 涉及到的知识点: 1.NSURLConnection 异步下载和封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 什么是网络应用? 需要通过联网进行操作的应用 网络应用的程序结构? c/s结构:即客户端/服务端 常见的

IOS 开发之网络数据下载和JSON解析

简介 在本文中,我将给大家介绍ios中如何运用NSURLConnection从网络上下载数据,以及解析JSON数据格式的数据,还有数据的显示和图片异步下载. 涉及到的知识点: 1.NSURLConnection的异步下载和数据请求方法的封装. 2.认识JSON格式和JSON格式的解析使用 3.数据在模拟器上的显示和图片的异步下载(使用SDWebImage异步显示图片,SDWebImage是一个库) 注意: 在ios开发中,无论是数据还是图片都是使用异步下载方法,不能使用同步. 内容 首先,要完成

iOS网络数据下载和JSON解析

iOS网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍iOS中如何利用NSURLConnection如何从网络中下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载显示. 涉及到的知识点: 1.NSURLConnection异步下载和封装 #import "ZJHttpRequest.h" //消除performSelector的警告 #pragma clang diagnostic ignored "-Warc-performSelec

ios 网络数据下载和JSON解析

ios 网络数据下载和JSON解析 简介 在本文中笔者将要给大家介绍ios中如何利用NSURLConnection从网络上下载数据,如何解析下载下来的JSON数据格式,以及如何显示数据和图片的异步下载显示 涉及到得知识: 1.NSURLConnection异步下载和封装 2.JSON格式和JSON格式解析 3.数据显示和使用SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 (1)什么是网络应用? 一般情况下, iPhone的计算机, 照相机不需要从网络上下载数据也能运行, 所以这

iOS之 网络数据下载及JSON解析

网络数据下载及JSON解析 简介 在本文章中笔者将要为大家介绍ios中任何利用NSRULConnection从网络上下载数据,如何解析下来的JSON 格式的数据,以及如何显示数据和图片的异步下载 有关的知识点 1.NSRULConnection的异步下载以及封装 2.JSON格式和JSON格式的解析 3.数据显示以及SDWebImage异步显示图片 内容 1.网络下载基础知识介绍 什么是网络应用? 网络应用的程序结构 常见的网络接口形式 常见的数据格式 界面开发的一般流程 2.NSRULConn