第一种方法是使用分类给字典添加一个类方法,将字典中的null值全部替换为空字符串,代码如下:

.h文件代码:

@interface NSDictionary (DeleteNull)

+ (id)changeType:(id)myObj;

@end

.m文件代码:

@implementation NSDictionary (DeleteNull)

//将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 @"";

}

#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;

}

}

使用方法:

[model setValuesForKeysWithDictionary:[NSDictionary changeType:dict]];

第二种方法是利用AFNetworking的自动解析,去除掉值为null的键值对,我挺推崇这种方案的,但还要看个人喜好,装逼一点的就用拓展(个人不推荐)代码如下:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

AFJSONResponseSerializer *response = [AFJSONResponseSerializer serializer];

response.removesKeysWithNullValues = YES;

manager.responseSerializer = response;

manager.requestSerializer = [AFJSONRequestSerializer serializer];

转载于:https://www.cnblogs.com/IceBlack-Tea-developer/p/5665685.html

请求接口获取到的数据其中出现null值,处理的时候导致了程序crash,解决方案如下:...相关推荐

  1. axios 请求接口获取文件流数据导出数据到excel,解决乱码

    axios.get("URL",{params:{data1:data1,data2:data2},headers: { 'Content-Type': 'application/ ...

  2. 股票level2数据接口获取逐笔成交数据的过程

    描述:通过股票level2数据接口获取逐笔成交数据的过程 地点:https://gitee.com/l2gogogo 获取过程: /// <summary> /// 获取逐笔成交数据 // ...

  3. V3.0element中table表格树形结构与懒加载通过接口获取展开行数据,并实现自动展开某行以及展开行数据删除,编辑,新增,展开行某些列不显示等功能

    1.获取列表后自动展开第一行,以及列表序号的显示 需要展开哪行,就赋值 expandsId 某行id 值就行了 2.展开某行时通过接口获取子行数据,一般需求是通过父行的id,来获取他的子行数据--lo ...

  4. js 请求接口获取不到登录cookie xhrFields 配置

    请求接口获取不到登录cookie, 首先看看是否加了xhrFields没有 如果加了,在看看他们加的位置对不对. 小心队友坑你就是这 xhrFields: {withCredentials: true ...

  5. django通过ajax请求接口返回多条数据,并动态生成表格,请求表单后将表格数据并入库

    一.最近在做接口相关的开发,需求是这样的,通过一个接口所需要传递的参数,调用接口后,处理接口响应的参数,返回多条数据,并动态生成表格,请求表单后将表格的数据入库,下面是我改过的代码,跟实际代码有些出入 ...

  6. 如何调用api接口获取其中的数据

    part1.API接口可以运用到的场景,主要包括以下几个方面: 1. 应用程序集成:API可以使不同的应用程序相互之间进行集成,比如将某个应用程序的数据传递给另一个应用程序,或者调用另一个应用程序的功 ...

  7. 通过API接口获取下来的数据需要怎样才能应用

    获取到API接口下来的数据之后,为了能够在自己的项目或应用中进行应用开发,需要进行一些必要的数据处理和解析,主要包括以下几个方面: 数据格式解析:数据获取下来通常是以JSON或XML等格式进行返回的, ...

  8. java接口获取天气预报json数据

    https://blog.csdn.net/weixin_38959210/article/details/83515783 首先进上面这个链接的文档里面,获取到JAVA调用HTTP接口的方法. 我们 ...

  9. 使用 axios 发送请求到servlet ,后端数据接收为null

    axios请求头中的Content-Type 服务器在收到http请求的时候,怎么去解析参数,是请求头header中的Content-Type规定的,也就是内容类型.不同形式的参数设置不同类型的请求头 ...

最新文章

  1. 【项目管理】Project使用
  2. concat与concat_ws区别
  3. matlab 小括号
  4. python加入中小学课程_【python即将进入中学课堂,编程从小抓起,竟然在这几点上应验了】- 环球网校...
  5. 【转】写给想学习自动化测试的新人
  6. 事件处理程序的执行上下文
  7. mysql重建索引_mysql创建、删除、重建、删除索引的操作命令的一些总结
  8. MySQL索引(1)
  9. 【论文阅读】Network In Network
  10. 【渝粤题库】国家开放大学2021春2779植物病虫害防治基础题目
  11. Cadence 17.2 Pad Editor入门指南(2)
  12. 系统集成项目管理工程师(软考中级)—— 第二十二章 安全管理 笔记分享
  13. 怎么知道服务器是否正版,盗版太坑爹!五招识别Win7旗舰版正版
  14. Android 使用 百度地图 测量 多边形面积
  15. 由计算机病毒引起的问题属于,多数情况下由计算机病毒程序引起的问题属于()故障。A.硬件B.软件C.操作D.电源...
  16. 函数指针的定义及使用
  17. 可能是史上最详细攻略的广州人才引进入户
  18. 家长心态建设;一切都没想象的那么糟
  19. EU.org免费域名申请教程
  20. Gom传奇引擎的微端连不上的原因是什么?附:微端配置教程

热门文章

  1. 存储器的保护(二)——《x86汇编语言:从实模式到保护模式》读书笔记19
  2. 「 每日一练,快乐水题 」682. 棒球比赛
  3. 都2021年了,不会还有人连深度学习还不了解吧(六)-- Padding篇
  4. UNIX再学习 -- 信号处理
  5. php smarty 限制显示字数,smarty现在显示字数的各种写法
  6. Android PC投屏简单尝试(录屏直播)3—软解章(ImageReader+FFMpeg with X264)
  7. Android adb无线调试脚本
  8. 基于glibc的程序在android上的移植
  9. Pocket Hacking: NetHunter实战指南
  10. java 浮点数精度_Java中浮点数精度问题