iOS應(yīng)用中常常需要和服務(wù)器進行交互,向服務(wù)器請求數(shù)據(jù)。服務(wù)器返回的數(shù)據(jù)往往以JSON格式組織。在iOS中,我們可以使用NSURLSession或者AFNetworking等框架來進行網(wǎng)絡(luò)請求。在請求數(shù)據(jù)時,我們需要將傳輸?shù)腏SON數(shù)據(jù)進行格式化。下面,我們將介紹如何將JSON數(shù)據(jù)格式化。
// 將JSON數(shù)據(jù)格式化成NSDictionary對象
NSError *error = nil;
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
if (error) {
NSLog(@"Parse Json Error:%@", error.localizedDescription);
}
// 將NSDictionary對象轉(zhuǎn)化成JSON格式的數(shù)據(jù)
NSError *jsonError = nil;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params options:NSJSONWritingPrettyPrinted error:&jsonError];
if (jsonError) {
NSLog(@"Create Json Error:%@", jsonError.localizedDescription);
} else {
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"Json Data:%@", jsonString);
}
上面的代碼展示了如何將JSON數(shù)據(jù)格式化。在第一段代碼中,我們將從服務(wù)器返回的JSON數(shù)據(jù)格式化成NSDictionary對象。可以看到,我們使用了NSJSONSerialization類中的JSONObjectWithData方法。其中,data參數(shù)表示要格式化的JSON數(shù)據(jù),options參數(shù)可以設(shè)置解析選項,error參數(shù)表示解析過程中可能出現(xiàn)的錯誤。在第二段代碼中,我們將NSDictionary對象轉(zhuǎn)化成JSON格式的數(shù)據(jù)。可以看到,我們同樣使用了NSJSONSerialization類中的dataWithJSONObject方法。其中,params參數(shù)表示要格式化的NSDictionary對象,options參數(shù)可以設(shè)置格式化選項,error參數(shù)表示格式化過程中可能出現(xiàn)的錯誤。