iOS開發(fā)中,我們經(jīng)常會涉及到重新組裝JSON數(shù)據(jù)的場景。有時候第三方接口返回的JSON數(shù)據(jù)格式不符合我們的需求,需要對其進行重新組裝。下面就來看一下如何在iOS中重新組裝JSON數(shù)據(jù)。
首先,我們需要先將原始的JSON數(shù)據(jù)轉化為可操作的對象,這里使用iOS自帶的NSJSONSerialization來實現(xiàn):
NSError *error = nil; NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
data是原始的JSON數(shù)據(jù),通過NSJSONSerialization轉化為NSDictionary對象。
接下來,我們可以對NSDictionary對象進行操作,重新組裝數(shù)據(jù)。
NSMutableArray *newArr = [[NSMutableArray alloc] init]; NSArray *oldArr = jsonDict[@"old_array"]; for (NSDictionary *oldDic in oldArr) { NSMutableDictionary *newDic = [[NSMutableDictionary alloc] init]; [newDic setObject:oldDic[@"name"] forKey:@"Name"]; [newDic setObject:oldDic[@"age"] forKey:@"Age"]; [newArr addObject:newDic]; } NSMutableDictionary *newJson = [[NSMutableDictionary alloc] init]; [newJson setObject:newArr forKey:@"new_array"]; NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:newJson options:NSJSONWritingPrettyPrinted error:&error]; NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
以上代碼將原始的JSON數(shù)據(jù)中的old_array里的數(shù)據(jù)重新組裝成了new_array,并將結果轉化為JSON字符串。
最后,我們需要注意JSON的數(shù)據(jù)格式問題。在iOS開發(fā)中,推薦使用JSON的pretty格式,方便查看數(shù)據(jù)。在對JSON數(shù)據(jù)進行轉化時,需要使用NSJSONWritingPrettyPrinted選項:
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:newJson options:NSJSONWritingPrettyPrinted error:&error];
以上就是iOS重新組裝JSON數(shù)據(jù)的實現(xiàn)方法。通過NSJSONSerialization將原始數(shù)據(jù)轉化為可操作的NSDictionary對象,然后對對象進行操作,再將結果轉化為JSON字符串輸出。注意格式問題,避免出現(xiàn)不必要的錯誤。