我(服务器Java开发人员)和我的两个同事(iOS和Android开发人员)遇到问题(实际上是争执)。
移动开发人员的意见:我必须替换他们从我的服务器中检索到的JSON,将所有空字段(此字段可以是我的自定义对象的字段)替换为空引号(请注意,Java是一种具有静态类型的语言) 。这样做的原因:他们找不到解决方案,该解决方案允许将我的JSON(映射到对象)反序列化(如果它具有空值)。
我的观点:java序列化程序不能在值级别上操作,只能在类型级别上操作。因此,我只能为某些类编写序列化程序。而且,我不知道为什么,但是空引号而不是null在我看来是非常不好的做法,将来可能会产生许多问题。
最佳答案
假设您正在尝试推断字段的类型,因此,一个假设的名为f
的通常包含number
。
这对我来说很有意义,因为您正在将一种强类型语言与一种非强语言相结合。
一旦f
实际上是null
服务器端,是否有必要将一个空字符串替换为null
值?不对我
我通常会邀请我的团队对此类问题保持一致,因为对于拥有如此可变领域的新手而言,这可能会更加棘手。而且,说实话,一个空字符串并不能告诉我您没有实际值,相反,在我看来,您有一个并且是一个空字符串!
也就是说,涉及null
值的方法对我来说听起来更加连贯。
除了在其他响应中已经讨论过的其他建议之外,另一种解决方案可能是清除这些字段,但它破坏了其父对象的结构,并且仍然可能导致比在那里使用null
严重得多的问题。
在最坏的情况下,如果他们不想处理null
值,则可以引入一个用默认值替换它们的层来绕过它们的侧面。这样,您将永远说出api是有意义的。