iOS中的數組和JSON之間常常需要相互轉換,因為我們拿到的數據往往是JSON格式,而處理數據往往需要使用數組。下面我們就來了解一下iOS中數組如何進行JSON化。
首先,我們需要使用iOS自帶的NSJSONSerialization類將數組轉化為JSON格式。NSJSONSerialization可以將NSArray和NSDictionary等數據類型轉換為JSON格式的NSData。
NSError *error; NSArray *array = @[@"apple", @"banana", @"orange"]; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:&error]; if (!jsonData) { NSLog(@"轉換JSON失敗:%@", error); } else { NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; NSLog(@"JSON字符串:%@", jsonString); }
在上述代碼中,我們首先創建了一個數組,然后使用dataWithJSONObject方法將其轉換為JSON格式的NSData。options參數是可選的,如果我們想要讓生成的JSON格式更易讀,可以設置為NSJSONWritingPrettyPrinted,這樣就會在生成的數據中加上空格和縮進。如果轉換失敗,就會將出錯信息打印出來,否則就將JSON格式的NSData轉換為NSString打印出來。
當然,我們也可以將JSON格式的NSData轉換為數組:
NSData *jsonData = [@"[1, 2, 3]" dataUsingEncoding:NSUTF8StringEncoding]; NSError *error; id object = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error]; if (!object) { NSLog(@"轉換數組失敗:%@", error); } else { NSArray *array = (NSArray *)object; NSLog(@"數組:%@", array); }
在上述代碼中,我們首先創建了一個JSON格式的NSData,然后使用JSONObjectWithData方法將其轉換為NSArray格式的數據。options參數是可選的,如果我們想要讓轉換過程更嚴格,可以設置為NSJSONReadingMutableContainers,這樣生成的NSArray或NSDictionary會是可變的,也就是可以進行增刪改操作。同樣,如果轉換失敗,就會將出錯信息打印出來,否則就將轉換出來的NSArray打印出來。