• ios网络_json数据解析


    • 网络上数据传输以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上即可.
  • 相关阅读:
    Django学习(二) Django框架简单搭建
    Django学习(一) Django安装配置
    Python学习(一) Python安装配置
    注册第一天,纪念一下
    小程序笔记
    详解HTML5中的进度条progress元素简介及兼容性处理
    服务管理
    yum
    管道,输出,管道,重定向,grep
    VIM
  • 原文地址:https://www.cnblogs.com/adampei-bobo/p/5292868.html
Copyright © 2020-2023  润新知