欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS 開發(fā)之NSDictionary轉(zhuǎn)換成JSON字符串

 更新時(shí)間:2017年08月14日 09:33:28   作者:NunchakusHuang  
這篇文章主要介紹了IOS 開發(fā)之NSDictionary轉(zhuǎn)換成JSON字符串的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分知識(shí),需要的朋友可以參考下

IOS 開發(fā)之NSDictionary轉(zhuǎn)換成JSON字符串

普通情況下,你可能會(huì)用一個(gè)NSDictionary的分類去做NSDictionary轉(zhuǎn)JSON,如下代碼:

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對(duì)象,而[NSJSONSerialization dataWithJSONObject:options:error:]這個(gè)方法是不能解析這些對(duì)象的,如果有這些對(duì)象,則會(huì)導(dǎo)致crash。所以我們應(yīng)該在調(diào)用NSJSONSerialization之前加一步,將所有數(shù)據(jù)處理成NSString,代碼如下:

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就不會(huì)crash了,同理,NSArray也應(yīng)該這樣做。

如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論