iOS开发解决服务器返回的json串中的NSNull类型

后端返回的数据中总会出现一些NSNull类型,当我们一处理程序就会崩溃,因此想到把返回的数据中的NSNull类型全部转换成@""空字符串。下面是转化方法:

1 新建一个NSObject类 自定义如下几个方法

#pragma mark - 公有方法

//类型识别:将所有的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;
            
}
#pragma mark - 私有方法
//将NSDictionary中的Null类型的项目转化成@""
+(NSDictionary *)nullDic:(NSDictionary *)myDic {
    
    NSMutableDictionary *resDic = [[NSMutableDictionary alloc]init];
    
    [myDic enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        
       id Obj = [self changeType:obj];
        
        [resDic setObject:Obj forKey:key];
    }];
    
    return resDic;
    
}
//将NSArray中的Null类型的项目转化成@""
+(NSArray *)nullArr:(NSArray *)myArr {
    
    NSMutableArray *resArr = [[NSMutableArray alloc] init];
    
    [myArr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        
       id Obj = [self changeType:obj];
        
        [resArr addObject:Obj];
    }];
    
    return resArr;

}
//将NSString类型的原路返回
+(NSString *)stringToString:(NSString *)string{
    
    return string;
    
}
//将Null类型的项目转化成@""
+(NSString *)nullToString {
    
    return @"";
}


2 将服务器返回的数据先进行解析得到字典或者数组(我这边是得到数组),将得到的数组在放进自定义类中进行转换

        NSArray *arrayCopy =[ChangeTypeTool changeType:array];

3 输出结果比较,上面的是转换前的,下面的是转换后的

iOS开发解决服务器返回的json串中的NSNull类型_第1张图片
转换前.png
iOS开发解决服务器返回的json串中的NSNull类型_第2张图片
转换后.png

对比可以发现,已经将NSNull 类型的数据都转换成了@"".

你可能感兴趣的:(iOS开发解决服务器返回的json串中的NSNull类型)