zoukankan      html  css  js  c++  java
  • IOS开发之网络数据Json处理

    iOS网络开发中,一般涉及到网络请求接口,都离不开关于json数据的处理。json数据作为各个前端和后台交互传递数据的格式,具有跨平台,轻型数据量,简洁易懂的优点。

    json被广泛应用于Android,iOS,HTML5等于后台服务器交互的场景中,json作为一个跨平台的交互数据格式,必定有对象与二进制数据的转换,因为所有的不同平台之间传递信息识别的数据类型就是二进制。

    iOS中的json数据处理核心就是json串与json对象之间的转换。json串与json对象都是基于iOS中NSObject类,在与后台的交互中,NSObject类与NSData类之间能互相转换,用于数据交互。

    NSData与NSObject类之间的转换在iOS框架中很简单,也很常见,此处不再赘述,本篇着重讨论json串与json对象的转换。

    #====================从后台接收数据的处理===================================

    从后台接收到的数据一般为NSData类型的,可以直接用iOS框架提供的json解析类进行解析,直接得到的就是json对象。

    //获取接口反馈的字符串数据,此处用的是MKNetworkKit网络库
    NSString *responseString = [completedOperation responseString];
    
    NSData *responseData = [responseString dataUsingEncoding:NSUTF8StringEncoding];
    
    if (responseData != nil)
    {
        id jsonObject = nil;
        NSError *error = nil;
        jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];
        if  (error == ill)
        {
           //判断jsonObject为NSArray还是NSDictionary
        }  
        else
        {
            //json解析出错处理
        }
    }
    

     如果后台返回的键值对中包含有json字符串类型,那么就要对json串进行解析处理

    + (id)jsonObjectWithString:(NSString *)string
    {
        NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
        NSError *error;
        id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
        
        if (error == nil) {
            return jsonObject;
        }
        else
        {
            DLog(@"%@",error.localizedDescription);
            return nil;
        }
    }

    #====================前端传递给后台json格式的处理===================================

    若在调用后台的接口时需要给后台传递json数据,一般是把json的NSArray货NSDictionary类型转换为NSString类型,然后可以选择键值对参数或NSData二进制格式传递给后台。

    json集合对象转换为json串的代码

    + (NSString *)jsonStringWithObject:(id)jsonObj
    {
        NSString *jsonString = nil;
        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonObj
                                                           options:0
                                                            error:&error];
        if (! jsonData) {
            DLog(@"Got an error: %@", error);
        } else {
            jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
        }
        
        return jsonString;
    }
  • 相关阅读:
    python接口自动化基础框架结构 ——分层
    常见的布局实现,以及响应式布局技巧。
    google closure继承模块三:goog.base()源码分析
    google closure--继承模块二:goog.base()demo分析
    google closure--继承模块一:goog.inherits()
    项目中踩过的坑之-sessionStorage
    .NET/C#使用NPOI操作Excel
    WEB免费打印控件推荐
    Linux下部署ASP.NET项目
    Hibernate 查询方式(HQL/QBC/QBE)汇总
  • 原文地址:https://www.cnblogs.com/csdnmc/p/5390212.html
Copyright © 2011-2022 走看看