iOS中的字典和數(shù)組是常見的數(shù)據(jù)類型,而JSON是一種輕量級的數(shù)據(jù)交換格式,它可以方便地轉(zhuǎn)換成其他的數(shù)據(jù)類型。在iOS開發(fā)中,我們通常需要將字典或者數(shù)組轉(zhuǎn)換成JSON字符串,或者將JSON字符串轉(zhuǎn)換成字典或者數(shù)組。下面我們來看一下如何實現(xiàn)iOS數(shù)組和字典的JSON轉(zhuǎn)換。
字典轉(zhuǎn)JSON:
//將字典轉(zhuǎn)換成NSData對象 NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error]; if (error) { NSLog(@"字典轉(zhuǎn)換成JSON字符串出錯:%@",error); } else { //將NSData對象轉(zhuǎn)換成NSString字符串 NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSLog(@"字典轉(zhuǎn)換成JSON字符串成功:%@",jsonString); }
數(shù)組轉(zhuǎn)JSON:
//將數(shù)組轉(zhuǎn)換成NSData對象 NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error]; if (error) { NSLog(@"數(shù)組轉(zhuǎn)換成JSON字符串出錯:%@",error); } else { //將NSData對象轉(zhuǎn)換成NSString字符串 NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSLog(@"數(shù)組轉(zhuǎn)換成JSON字符串成功:%@",jsonString); }
JSON轉(zhuǎn)字典:
//將JSON字符串轉(zhuǎn)換成NSData對象 NSError *error; NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; //將NSData對象轉(zhuǎn)換成字典 NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; if (error) { NSLog(@"JSON字符串轉(zhuǎn)換成字典出錯:%@",error); } else { NSLog(@"JSON字符串轉(zhuǎn)換成字典成功:%@",dictionary); }
JSON轉(zhuǎn)數(shù)組:
//將JSON字符串轉(zhuǎn)換成NSData對象 NSError *error; NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; //將NSData對象轉(zhuǎn)換成數(shù)組 NSArray *array = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; if (error) { NSLog(@"JSON字符串轉(zhuǎn)換成數(shù)組出錯:%@",error); } else { NSLog(@"JSON字符串轉(zhuǎn)換成數(shù)組成功:%@",array); }
使用NSJSONSerialization類可以方便地進行JSON和其他數(shù)據(jù)類型的轉(zhuǎn)換,并且在轉(zhuǎn)換過程中可以通過options參數(shù)控制轉(zhuǎn)換的格式。需要注意的是,JSON字符串中可能包含轉(zhuǎn)義字符,如"\"和"\\"等,轉(zhuǎn)換時需要特別處理。