json数据解析
=====================================================
1.网络请求
2.json数据格式
3.完成网络请求的数据解析
======================================================
1.网络请求
网络编程基础知识
客户端(Client):移动应用(iOS、android等应用)
服务器(Server):为客户端提供服务、提供数据、提供资源的机器
请求(Request):客户端向服务器索取数据的一种行为
响应(Response):服务器对客户端的请求做出的反应,一般指返回数据给客户端
URL:全称是Uniform Resource Locator(统一资源定位符,俗称网址)
通过1个URL地址,能找到互联网上唯一的1个资源
URL三部分组成:协议 主机iP地址+端口号 资源
域名:IP地址不好记,用利于记忆的符号来代替IP地址,叫做域名
域名解析器 : 把网址里写的域名解析成对应的IP地址
www.sina.com 默认指定访问的资源
HTTP协议
HTTP的全称是Hypertext Transfer Protocol, 超文本传输协议, 访问的是远程的网络资源,格式是http://
http协议是在网络开发中最常用的协议:
<1>规定客户端和服务器之间的数据传输格式
<2>让客户端和服务器能有效地进行数据沟通
网络中数据
类型都是字符串,字符串通常有两种格式:
1.json格式(90%的数据格式 常用,简单)
[ ] {key:value,key:value,key:value }
2.XML格式(格式少,不常用 ,复杂)
2.网络数据的下载
<1>同步下载
单线程(使用主线程进行下载),在下载完成前,线程阻塞
//同步下载
//第一步:创建URL
//将字符串网址转换为NSURL类型,OC中使用NSURL类型的网址
NSURL * url = [NSURL URLWithString:@"http://10.0.8.8/sns/my/user_list.php?number=20&page=1"];
//第二步:发送并得到数据
//同步请求数据,函数运行较长时间,数据通过返回值获得
NSData * data = [NSData dataWithContentsOfURL:url];
-----------------------------------------------------------------------------
<2>异步下载
开辟新线程负责下载,UI主线程不会卡死,程序仍可继续执行,当子线程完成下载,通过回调反馈数据
3. json数据解析
(JavaScript Object Notation)
简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。
<1>Json数据的格式
JSON有两种表示结构,对象和数组。
{}中表示一个字典
[]中表示一个数组
对象结构以”{”大括号开始,以”}”大括号结束。中间部分多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。
{
key1:value1,
key2:value2,
...
}
关键字是字符串,值可以是字符串,数值,true,false,null,对象或数组
数组结构以”[”开始,”]”结束。中间多个以”,”分隔的值列表组成,语法结构如代码。
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
======================================================