国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

IOS 開發之NSDictionary轉換成JSON字符串

2024-05-04 23:59:26
字體:
來源:轉載
供稿:網友

IOS 開發之NSDictionary轉換成JSON字符串

普通情況下,你可能會用一個NSDictionary的分類去做NSDictionary轉JSON,如下代碼:

NSError *error;NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&error];if (! jsonData) {  return @"{}";} else {  return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];}

然而,NSDictionary裝的數據類型魚龍混雜,有可能是NSDate,NSNumber,NSValue等Objective-C對象,而[NSJSONSerialization dataWithJSONObject:options:error:]這個方法是不能解析這些對象的,如果有這些對象,則會導致crash。所以我們應該在調用NSJSONSerialization之前加一步,將所有數據處理成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轉JSON就不會crash了,同理,NSArray也應該這樣做。

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 新津县| 建阳市| 陆丰市| 南和县| 宁波市| 定边县| 和田市| 辽源市| 南川市| 永仁县| 抚宁县| 同心县| 河津市| 工布江达县| 太白县| 仙居县| 萨迦县| 靖江市| 绥化市| 牟定县| 陈巴尔虎旗| 肇州县| 秦安县| 托克托县| 临颍县| 迭部县| 馆陶县| 哈巴河县| 新竹市| 宁南县| 临武县| 含山县| 清水河县| 共和县| 莱芜市| 通许县| 诸城市| 海伦市| 阿图什市| 安图县| 舟山市|