首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSJSONSerialization和NSNull

NSJSONSerialization和NSNull
EN

Stack Overflow用户
提问于 2014-07-31 22:00:27
回答 2查看 2.2K关注 0票数 5

有时,我会遇到像"'data':null‘这样的JSON结构。NSJSONSerialization将这些转化为NSNull,老实说,这是相当烦人的。

我理解这背后的原因--像NSDictionary这样的东西不能包含零值。

这很好,不过在这些情况下,我更希望看到反序列化数据结构中缺少的元素,在许多情况下,这实际上简化了处理。是否有一个选项或配置可以传递给NSJSONSerialization,并要求它这样做--只是忽略了反序列化数据结构中的那些零?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-31 22:10:44

我认为这是不可能的。您可以传递给类的选项没有提到类似的内容,类的介绍声明为All objects are instances of NSString, NSNumber, NSArray, NSDictionary, or NSNull.

然而,这可能会对你有利。如果您是通过CRUD类型的web更新对象的本地实例,则可能根本不会在JSON中传递空选项。但是,如果需要对当前设置为值的本地实例上的属性进行零处理,如果服务器在JSON中将攻击设置为空,则可以很容易地检查JSONSerialized对象是否将attr设置为NSNull,如果缺少该属性,则不能。

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

tl博士"no.“

票数 3
EN

Stack Overflow用户

发布于 2014-07-31 22:32:00

不,您不能这样做,因为缺失(读:“未定义”)值和显式定义的null值之间有语义上的区别。

而一些(很多?)JSON API可能不会做出这种区分,这在一般情况下是不可取的:如果您作为API提供程序使用缺少属性在您的使用者端执行删除,这就要求您始终在响应中发送完整的实体。

如果您的实体有许多属性,并且您有更多的属性,这可能会对您必须提升到客户端的数据量产生相当大的影响。

另外,如果您引入了一个bug,其中一个属性暂时丢失了,那么您就会开始在为客户提供…服务的每个请求中扰乱客户端数据。

同时,过滤掉null本身也是相当直接的…。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25069657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档