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

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

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

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

普通情況下,你可能會用一個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對象,而[NSJSONSerialization dataWithJSONObject:options:error:]這個方法是不能解析這些對象的,如果有這些對象,則會導(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就不會crash了,同理,NSArray也應(yīng)該這樣做。

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

相關(guān)文章

  • php 生成加密公鑰加密私鑰實例詳解

    php 生成加密公鑰加密私鑰實例詳解

    這篇文章主要介紹了php 生成加密公鑰加密私鑰實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • php微信公眾號開發(fā)模式詳解

    php微信公眾號開發(fā)模式詳解

    這篇文章主要介紹了php微信公眾號開發(fā)者模式,通過后臺服務(wù)器與微信關(guān)注用戶實現(xiàn)更多的交互作用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • CI框架驗證碼CAPTCHA輔助函數(shù)用法實例

    CI框架驗證碼CAPTCHA輔助函數(shù)用法實例

    這篇文章主要介紹了CI框架驗證碼CAPTCHA輔助函數(shù)用法,以實例形式詳細講述了基于CAPTCHA輔助函數(shù)實現(xiàn)驗證碼的方法,需要的朋友可以參考下
    2014-11-11
  • 分享自定義的幾個PHP功能函數(shù)

    分享自定義的幾個PHP功能函數(shù)

    這篇文章主要介紹了分享自定義的幾個PHP功能函數(shù),本文羅列的都是WEB開發(fā)中常用的一些功能函數(shù),例如提交過濾、字符串截取、IP地址匿名化、隱藏文件真實路徑等,需要的朋友可以參考下
    2015-04-04
  • 利用switch語句進行多選一判斷的實例代碼

    利用switch語句進行多選一判斷的實例代碼

    下面小編就為大家?guī)硪黄胹witch語句進行多選一判斷的實例代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 詳解PHP5.6.30與Apache2.4.x配置

    詳解PHP5.6.30與Apache2.4.x配置

    這篇文章主要介紹了詳解PHP5.6.30與Apache2.4.x配置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • smarty模板引擎使用內(nèi)建函數(shù)foreach循環(huán)取出所有數(shù)組值的方法

    smarty模板引擎使用內(nèi)建函數(shù)foreach循環(huán)取出所有數(shù)組值的方法

    這篇文章主要介紹了smarty模板引擎使用內(nèi)建函數(shù)foreach循環(huán)取出所有數(shù)組值的方法,實例分析了foreach循環(huán)遍歷數(shù)組的幾種常用技巧,需要的朋友可以參考下
    2015-01-01
  • php如何用PDO操作大數(shù)據(jù)對象

    php如何用PDO操作大數(shù)據(jù)對象

    我們在使用數(shù)據(jù)庫時,很少會向數(shù)據(jù)庫中存儲很大的內(nèi)容字段。但是,MySQL 其實也為我們準(zhǔn)備了這種類型的存儲,只是我們平常用得不多而已。今天我們就來學(xué)習(xí)了解一下使用 PDO 如何操作 MySQL 中的大數(shù)據(jù)對象。
    2021-06-06
  • Drupal7連接多個數(shù)據(jù)庫及常見問題解決

    Drupal7連接多個數(shù)據(jù)庫及常見問題解決

    這篇文章主要介紹了Drupal7連接多個數(shù)據(jù)庫的方法、操作實例,以及常見問題解決方法,需要的朋友可以參考下
    2014-03-03
  • CI(CodeIgniter)簡單統(tǒng)計訪問人數(shù)實現(xiàn)方法

    CI(CodeIgniter)簡單統(tǒng)計訪問人數(shù)實現(xiàn)方法

    這篇文章主要介紹了CI(CodeIgniter)簡單統(tǒng)計訪問人數(shù)實現(xiàn)方法,這里使用TXT文本文件簡單演示了CodeIgniter框架記錄訪問人數(shù)的實現(xiàn)技巧,需要的朋友可以參考下
    2016-01-01

最新評論

厦门市| 深水埗区| 广安市| 晴隆县| 丰原市| 罗江县| 义马市| 盐源县| 芦溪县| 右玉县| 喀什市| 舒兰市| 怀远县| 石家庄市| 吉木萨尔县| 闽侯县| 平江县| 建阳市| 乡宁县| 临桂县| 靖江市| 昌平区| 岳阳县| 渭南市| 阿图什市| 文水县| 烟台市| 任丘市| 巴彦淖尔市| 迁安市| 临沭县| 尚志市| 邳州市| 班玛县| 永定县| 丽江市| 长顺县| 铜山县| 桦南县| 丽水市| 荆门市|