iOS開發中,經常要涉及到將數據轉換成json格式的操作。下面我們來看一下具體如何設置。
首先,我們需要將數據封裝成字典或者數組。例如:
NSDictionary *dict = @{ @"name": @"小明", @"age": @18, @"address": @"北京市海淀區" };
可以看到,我們將一些基本類型的數據,如字符串、數字,都封裝在字典中。
接著,我們需要使用NSJSONSerialization類的方法將字典轉換成json數據。方法如下:
NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error]; if (jsonData && !error) { NSString *json = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSLog(@"json數據:%@", json); } else { NSLog(@"%@", error.localizedDescription); }
上述代碼將字典轉換成json數據,并打印出來。我們可以通過options參數設置輸出json數據的格式,NSJSONWritingPrettyPrinted表示輸出格式為美觀的格式。
最后,我們需要將json數據轉換成字典或者數組。方法如下:
NSError *error = nil; id jsonObject = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; if (jsonObject && !error) { if ([jsonObject isKindOfClass:[NSDictionary class]]) { NSDictionary *resultDict = (NSDictionary *)jsonObject; NSLog(@"字典:%@", resultDict); } else if ([jsonObject isKindOfClass:[NSArray class]]) { NSArray *resultArray = (NSArray *)jsonObject; NSLog(@"數組:%@", resultArray); } } else { NSLog(@"%@", error.localizedDescription); }
上述代碼將json數據轉換成字典或者數組,并打印出來。我們可以通過判斷jsonObject的類型,來確定需要轉換成字典還是數組。