一尘不染

通过JSON序列化将[NSNull null]值存储在NSUserDefaults中,会导致意外的异常

json

我有一个使用基于JSON的API的应用程序。作为JSON的一部分,通常将值设置为“ null”。这可能很常见:

{"data":["one","two","three"],"name":null,otherstuff:10}

最近,我尝试在NSUserDefaults中存储从JSON对象转换的杂项NSDictionary层次结构。不幸的是,如果有空数据,它将在IOS中转换为[NSNull
null]时引发异常。显然,这不能保存在首选项中。

我想知道以前是否有人为此工作过?我尝试添加一些逻辑以首先从JSON中删除所有空值,但成功率有限,但是似乎不建议在存储数据之前先对其进行修改。有没有更好的方法来解决这个问题?


阅读 341

收藏
2020-07-27

共1个答案

一尘不染

我已经尝试了一些递归解决方案,但是它们往往很复杂并且不能很好地处理混合类型的内容。在最简单的层次上,这里是一个简单的示例,如果您对清洁有一个可预测的,平坦的响应,则该示例很好用。

NSMutableDictionary *dictMutable = [dict mutableCopy];
[dictMutable removeObjectsForKeys:[dict allKeysForObject:[NSNull null]]];
2020-07-27