《PHP應(yīng)用:IOS 開發(fā)之NSDictionary轉(zhuǎn)換成JSON字符串》要點:
本文介紹了PHP應(yīng)用:IOS 開發(fā)之NSDictionary轉(zhuǎn)換成JSON字符串,希望對您有用。如果有疑問,可以聯(lián)系我們。
IOS 開發(fā)之NSDictionary轉(zhuǎn)換成JSON字符串PHP教程
普通情況下,你可能會用一個NSDictionary的分類去做NSDictionary轉(zhuǎn)JSON,如下代碼:PHP教程
NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&error]; if (! jsonData) { return @"{}"; } else { return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; }
然而,NSDictionary裝的數(shù)據(jù)類型魚龍混雜,有可能是NSDate,NSNumber,NSValue等Objective-C對象,而[NSJSONSerialization dataWithJSONObject:options:error:]這個方法是不能解析這些對象的,如果有這些對象,則會導(dǎo)致crash.所以我們應(yīng)該在調(diào)用NSJSONSerialization之前加一步,將所有數(shù)據(jù)處理成NSString,代碼如下:PHP教程
NSError *error = nil; NSData *jsonData = nil; if (!self) { return nil; } NSMutableDictionary *dict = [NSMutableDictionary dictionary]; [self enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) { NSString *keyString = nil; NSString *valueString = nil; if ([key isKindOfClass:[NSString class]]) { keyString = key; }else{ keyString = [NSString stringWithFormat:@"%@",key]; } if ([obj isKindOfClass:[NSString class]]) { valueString = obj; }else{ valueString = [NSString stringWithFormat:@"%@",obj]; } [dict setObject:valueString forKey:keyString]; }]; jsonData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:&error]; if ([jsonData length] == 0 || error != nil) { return nil; } NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; return jsonString;
這樣就NSDictionary轉(zhuǎn)JSON就不會crash了,同理,NSArray也應(yīng)該這樣做.PHP教程
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!PHP教程
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/313.html