当前位置: 首页 > 编程笔记 >

解决JSON数据因为null导致数据加载失败的方法

秦天宇
2023-03-14
本文向大家介绍解决JSON数据因为null导致数据加载失败的方法,包括了解决JSON数据因为null导致数据加载失败的方法的使用技巧和注意事项,需要的朋友参考一下

一、首先分析问题:

使用NSJSONSerialization或者AFN框架的AFHTTPSessionManager(底层也是NSJSONSerialization)将NSData数据转化成OC对象,有时会出现URL正确,加载数据任然会报错:

 reason: '-[NSNull length]: unrecognized selector sent to instance

分析原因发现,转化出来的OC对象中含有null.所以,NSNull没有length方法,所以会报找不到方法错误。

二、解决办法:将"null"替换成“ ”。

     1.先将NSData数据转化成NSString;

     2.再对转化好的NSString进行替换;

     3.替换好的NSSting再转化成NSData;

     4.NSData转化成OC对象

下面提供一个封装好的方法,以后直接使用就好了

//替换数据中的空字符串
+ (NSArray*)arrayWithNoNullArray:(NSArray*)originalArray {
  //array -> string
  NSData *data = [NSJSONSerialization dataWithJSONObject:originalArray options:0 error:nil];
  NSString *str =[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
  //替换
  NSString *nStr = [str stringByReplacingOccurrencesOfString:@"null" withString:@"\"\""];
  //string -> array
  NSData *nData =[nStr dataUsingEncoding:NSUTF8StringEncoding];
  return [NSJSONSerialization JSONObjectWithData:nData options:0 error:nil];
}

传入一个含有null的OC数组,直接返回替换过的新数组。用不含null的数组再去加载数据,就不会有问题了。

好了,以上就是解决JSON数据因为null导致数据加载失败的方法,希望对有需要的朋友们有所帮助,如果有疑问打击可以留言交流。

 类似资料:
  • 本文向大家介绍SQL附加数据库失败问题的解决方法,包括了SQL附加数据库失败问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 为了偷个懒,利用这个数据库,但是在附加的时候出错了。 错误如下: 一开始还以为数据库位置存在问题,所以重新放置了一个位置,仍然无效。最后,上网寻找解决方法。所幸的是此类问题还真有人遇到了,而且也有好几种解决方法。我就用了两种方法,分享一下吧: 方法一: 将要附加的文件

  • 本文向大家介绍vuex页面刷新导致数据丢失的解决方案,包括了vuex页面刷新导致数据丢失的解决方案的使用技巧和注意事项,需要的朋友参考一下 解决vuex页面刷新导致数据丢失问题 vuex数据是存在内存当中,当页面刷新之后vuex数据自然会丢失。我们有两种方法解决该问题: 1.使用vuex-along 2.使用localStorage或者sessionStroage 1.使用vuex-along v

  • 本文向大家介绍SQL Server数据库附加失败的解决办法,包括了SQL Server数据库附加失败的解决办法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了SQL Server数据库附加失败的具体解决方法,供大家参考,具体内容如下 1、错误3415 问题:附加数据库的时候,发现总是附加失败,查看消息时发现问题如下: 查看消息后发现错误代码为3415 原因:数据库文件是只读的 解决方法:

  • 本文向大家介绍oracle 12c因误删pdb数据文件导致整个数据库打不开的解决方法,包括了oracle 12c因误删pdb数据文件导致整个数据库打不开的解决方法的使用技巧和注意事项,需要的朋友参考一下 前言 最近因为一位同事误删了某个插件数据库(PDB)的数据文件,结果整个数据库,包括容器数据库(CDB),以及其他插件数据库都用不了了。无奈。。。通过尝试各种方法最终解决了,觉着有必要将解决的过程

  • 我正在进行一个项目,该项目重用https://github.com/vdenotaris/spring-boot-security-saml-sample以IDP身份与Azure AD集成。 整合进行得相当顺利。我唯一不能修复的是元数据信任检查。 根据 https://docs.spring.io/autorepo/docs/spring-security-saml/1.0.x/reference

  • 我有一个问题与ADFS身份验证,因为我升级了Spring启动版本从2.2.5。释放到2.5. x 在新版本中,我收到以下错误消息:未能解密EncryptedData 依赖性: SAML请求 重新分析:/ SAML请求: 西格尔:http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 2.vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

  • 本文向大家介绍iscroll动态加载数据完美解决方法,包括了iscroll动态加载数据完美解决方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了iscroll动态加载数据的具体代码,供大家参考,具体内容如下 js. css 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我正在尝试将Reactome数据库加载到我的Neo4j桌面上。 我从Reactome网站下载了最新版本的数据库(https://reactome.org/dev/graph-database#GetStarted),我的Neo4j桌面的版本是1.3.4,对于创建的数据库,我使用的是Neo4j 4.1.1(也尝试了4.1.0)。 之后,我提取焦油。gz文件,并使用Neo4j Desktop中的终端使