最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

普通情況下,你可能會(huì)用一個(gè)NSDictionary的分類(lèi)去做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ù)類(lèi)型魚(yú)龍混雜,有可能是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)該這樣做。

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

相關(guān)文章

最新評(píng)論

怀柔区| 林甸县| 龙南县| 定边县| 泉州市| 岳阳市| 莱西市| 永川市| 波密县| 房产| 许昌市| 柳州市| 保山市| 康马县| 泗洪县| 佛山市| 新兴县| 长寿区| 绍兴县| 右玉县| 阿拉善盟| 全州县| 潮安县| 宁津县| 荥阳市| 河津市| 肃南| 镇巴县| 屏南县| 鄂托克旗| 临西县| 卢龙县| 秦安县| 昭平县| 教育| 胶州市| 酒泉市| 汾阳市| 伽师县| 咸宁市| 灵台县|