• 网络上数据传输以json或者xml格式.
  • json是字典 或者 数组 或者字典跟数组嵌套的形式.解析json就是把json反序列化(解析)---把json转换为oc对象.json序列化就是把oc对象转化成json.
  • 向搭建的本地服务器发送异步网络请求

  • 虽然苹果不建议在9.0以后使用了,但是这种方式还是要会的.
  • 其中connectError判断是否链接成功,如果不为nil说明链接出错,如果链接出错直接返回return,防止程序崩溃

  • response的本质是NSHTTPURLResponse则进行强转

  • response分相应头,响应体,相应头里面的httpResponse的一个属性是statusCode---服务器返回的状态码,200表示链接服务器成功并返回数据,304表示链接成功服务器数据没改变,不返回数据.如果状态码是5开头的则是服务器内部出错,4开头是客户端出错

  • 如果链接成功,则解析数据,数据可能是字典,可能是数组,用id类型接收

  • 如果error为nil则解析成功,输出json数据

*汉字显示的是Unicode编码,要做处理

  • 处理方式:创建分类---模型,声明字典中的属性.逐个NSLog打印每个属性就不会出现这个问题.
#import <Foundation/Foundation.h>
@interface Person : NSObject @property (nonatomic, copy) NSString *name;
@property (nonatomic, assign) int age; + (instancetype)personWithDic:(NSDictionary *)dic; @end #import "Person.h" @implementation Person //kvc字典转模型 + (instancetype)personWithDic:(NSDictionary *)dic{
Person *person = [self new];
[person setValuesForKeysWithDictionary:dic];
return person;
} - (NSString *)description {
return [NSString stringWithFormat:@"%@{name:%@,age:%d}",[super description],self.name,self.age];
}
@end
  • 重写description方法,进行输出
  • 在json解析出的字典数据,进行字典转模型打印输出.

如果解析出来的json的字典中的属性有10+好多好多...的话,而且又不需要所有的属性,只需要重写如下方法即可

//-(void)setValue:(id)value forUndefinedKey:(NSString *)key{
//
//}

另一个重要问题就是上面只是解析的一个很简单的一个字典.如果json中的数据是数组和字典嵌套的形式---一般都是这样的形式,如何解析.

  • 解析方法:只需要对NSDictionary和NSArray的这个方法进行重写- (NSString *)descriptionWithLocale:(id)locale,重写这个方法的本质就是:json里面的字典和数组的输出格式的拼接

  • 不需要导入头文件,这个方法可以自己保存起来当做代码块或者分类保存起来,用的时候直接cop上即可.

ios网络_json数据解析的更多相关文章

  1. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. Android网络之数据解析----SAX方式解析XML数据

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  3. iOS学习——JSON数据解析(十一)

    在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...

  4. 【原】iOS学习38网络之数据解析

    1. 解析的基本的概念 解析:从事先规定好的格式中提取数据 解析前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JOSN解析 2. X ...

  5. iOS网络之数据请求GET和POST

    1. HTTP和HTTPS协议 1> URL URL全称是Uniform Resource Locator(统一资源定位符)通过1个URL,能找到互联网上唯一的1个资源 URL就是资源的地址.位 ...

  6. iOS学习—JSON数据解析

      关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如TouchJson,JSONKit,SBJon等,自从iOS5.0以后,苹果SDK推出了自带的JSON解决方案NSJSONSer ...

  7. iOS学习之数据解析

    解析:按照约定好的格式提取数据的过程叫做解析; 后台开发人员按照约定好的格式存入数据,前端开发人员按照约定的格式读取数据; 主流的格式: XML / JSON 前端和后台都能识别的格式;  XML解析 ...

  8. Python网络爬虫数据解析的三种方式

    request实现数据爬取的流程: 指定url 基于request发起请求 获取响应的数据 数据解析 持久化存储 1.正则解析: 常用的正则回顾:https://www.cnblogs.com/wqz ...

  9. 【iOS】Plist-XML-JSON数据解析

    网络上数据传输通用的有XML.JSON等,iOS中也能够用Plist. 要进行传输数据.就要首先进行序列化: 1.序列化.  对象转换成二进制流.(这个一句话即可) .反序列化. 二进制流转换为对象等 ...

随机推荐

  1. ul li横向排列及圆点处理

    如何用CSS制作横向菜单 让ul li横向排列及圆点处理   第一步:建立一个无序列表 我们先建立一个无序列表,来建立菜单的结构.代码是:<ul> <li><a href ...

  2. JitterBuffer

    jitter buffer QoS的解决方案 注:此博客中的某些说法是有问题的,如65536的整数倍,则其buffer会太大=>64k*1.5k=98M,另在超时处理中也有问题 VOIP中何为动 ...

  3. java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet的解决方案

    tomcat7启动后出现:java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet这个问题. 并且访问 ...

  4. redis缓存怎么存储对象

    2.把对象Object存储到redis中,怎么存?memcache存取对象是序列化和反序列化 使用通用的序列化.反序列化(频繁的会很消耗cpu,使用Google Protocol Buffer,将对象 ...

  5. mysql执行完select后,释放游标

    内存释放 在我们执行完SELECT语句后,释放游标内存是一个很好的习惯. .可以通过PHP函数mysql_free_result()来实现内存的释放. 以下实例演示了该函数的使用方法. 2.mysql ...

  6. 用宏 x y z,找出最大值最小值

    #define max(x,y,z) ((x)>(y)?(x):(y))>(z)?((x)>(y)?(x):(y)):(z) #define min(x,y,z) ((x)<( ...

  7. 云计算中心网络资源分配-Faircloud: sharing the network in cloud computing

    网络资源同计算资源以及存储资源一样,是一种可被租户共享使用并提高利用率的资源.但是,不同租户的计算资源以及存储资源之间,有很强的隔离性,可以实现按需按比例分配的使用方式,但是网络资源却不可以. 主要原 ...

  8. os

    内核,Shell和文件结构一起形成了基本的操作系统结构. from:大学生攻克Linux系统教程(又名天下没有难学的Linux) 发问: 0-内核,再怎么分出层次呢?

  9. 用Delphi“遥控”按钮

    很多情况下,我们需要在程序中实现这样的功能:在自编写的程序里控制另外一软件中的某个按钮被按下.比如,有一天你在聊QQ时觉得烦了,那么就想写程序来帮你按下“发送”按钮,省得你自己一次次动手了.那么,这个 ...

  10. android studio无法关联源码

    1.查看源码的时候报这个, 说找不到API 23的源码 2.本地的SDK 3.google  stackoverflow 给出解决方案 http://stackoverflow.com/questio ...