IOS 返回JSON数据中存在NULL的解决办法

来源:互联网 发布:电视节目策划 知乎 编辑:程序博客网 时间:2024/06/04 05:14

有些后台写的不好,返回数据的字段偶尔有NULL类型存在,如果不直接赋值给其他对象就会造成崩溃。解决办法的主要思路就是将其中的NULL对象转换为@”“空字符串。以下是封装好的方法

创建一个字典的分类
.h文件

#import <Foundation/Foundation.h>@interface NSDictionary (SetNilStr)+(id)changeType:(id)myObj;@end

.m文件

#import "NSDictionary+SetNilStr.h"@implementation NSDictionary (SetNilStr)//将NSDictionary中的Null类型的项目转化成@""+(NSDictionary *)nullDic:(NSDictionary *)myDic{    NSArray *keyArr = [myDic allKeys];    NSMutableDictionary *resDic = [[NSMutableDictionary alloc]init];    for (int i = 0; i < keyArr.count; i ++)    {        id obj = [myDic objectForKey:keyArr[i]];        obj = [self changeType:obj];        [resDic setObject:obj forKey:keyArr[i]];    }    return resDic;}//将NSArray中的Null类型的项目转化成@""+(NSArray *)nullArr:(NSArray *)myArr{    NSMutableArray *resArr = [[NSMutableArray alloc] init];    for (int i = 0; i < myArr.count; i ++)    {        id obj = myArr[i];        obj = [self changeType:obj];        [resArr addObject:obj];    }    return resArr;}//将NSString类型的原路返回+(NSString *)stringToString:(NSString *)string{    return string;}//将Null类型的项目转化成@""+(NSString *)nullToString{    return @"";}//主要方法//类型识别:将所有的NSNull类型转化成@""+(id)changeType:(id)myObj{    if ([myObj isKindOfClass:[NSDictionary class]])    {        return [self nullDic:myObj];    }    else if([myObj isKindOfClass:[NSArray class]])    {        return [self nullArr:myObj];    }    else if([myObj isKindOfClass:[NSString class]])    {        return [self stringToString:myObj];    }    else if([myObj isKindOfClass:[NSNull class]])    {        return [self nullToString];    }    else    {        return myObj;    }}@end

需要转换的时候调用以下方法就OK了,不管有多少个层级,全部转换

//json表示获取到的带有NULL对象的json数据NSDictionary *newDict = [NSDictionary changeType:json];
1 0
原创粉丝点击