NSJSONSerialization和NSNull

Pet*_*Guo 5 null json objective-c nsdictionary nsnull

有时我会遇到JSON结构,例如“'data':null”。NSJSONSerialization将它们转换为NSNull,老实说,这很烦人。

我了解其背后的原因-诸如NSDictionary之类的内容不能包含nil值。

很好,但是在那种情况下,我宁愿看到反序列化数据结构中缺少的元素,这在许多情况下实际上简化了处理。是否有可以传递给NSJSONSerialization的选项或配置,并要求它完全做到这一点-只是错过了反序列化数据结构中的那些nil?

gre*_*ser 3

我不相信这是可能的。您可以传递给班级的选项没有提及类似的内容,班级介绍中指出All objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull.

但是,这可以为您带来优势。如果您通过 CRUD 类型的 Web API 更新对象的本地实例,则可能根本不会在 JSON 中传递空选项。但是,如果您需要将本地实例上当前设置为值的属性设为 nil,并且服务器在 JSON 中将该 attr 设置为 null,则您可以轻松检查 JSONSerialized 对象是否将该 attr 设置为NSNull,如果它丢失了,你就不能这样做。

如果您控制生成 JSON 的端点,最好的选择就是根本不设置 attr。

tl;博士“不”。