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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM