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;
}

 

posted @ 2016-04-14 10:52  蓝清凡  阅读(2942)  评论(0编辑  收藏  举报