在開發iOS應用過程中,經常會遇到從服務器返回的JSON數據中含有多個斜杠的情況。這種情況下我們需要對JSON數據進行處理才能正常解析。
下面是處理多斜杠JSON數據的代碼:
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:nil]; if ([jsonObject isKindOfClass:[NSDictionary class]]) { // 從jsonObject中取得數據 } else if ([jsonObject isKindOfClass:[NSArray class]]) { // 從jsonObject中取得數據 }
需要注意的是,在使用NSJSONSerialization進行解析時,我們需要設置NSJSONReadingAllowFragments選項,此外,如果JSON數據的數據類型是數組類型,我們就需要使用NSArray進行解析,如果是字典類型,則需要使用NSDictionary進行解析。
如果我們需要上傳JSON數據到服務器,則需要對上傳的數據進行編碼,下面是將字典編碼成JSON數據的示例:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data options:NSJSONWritingPrettyPrinted error:nil]; NSString *jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; jsonString = [jsonString stringByReplacingOccurrencesOfString:@"\r" withString:@""]; jsonString = [jsonString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
在將字典數據編碼成JSON數據時,我們需要用NSJSONSerialization進行編碼,此外,我們還需要對編碼后的JSON數據進行處理,去掉轉義字符和換行符,最后使用stringByAddingPercentEscapesUsingEncoding進行URL編碼,便于上傳到服務器。