JSON中的空字段:空引号,空值还是删除字段?

Iva*_*hin 6 java serialization client-server

我(服务器Java开发人员)和我的两个同事(iOS和Android开发人员)遇到问题(实际上是争执)。

移动开发人员的意见:我必须替换他们从服务器检索的JSON,将所有空字段(此字段可以是我的自定义对象的字段)替换为空引号(请注意,Java是一种具有静态类型的语言) 。这样做的原因:他们找不到解决方案,该解决方案允许将反序列化我的JSON(映射到对象)(如果它具有空值)。

我的观点:java序列化程序不能在值级别上操作,只能在类型级别上操作。因此,我只能为某些类编写序列化程序。而且,我不知道为什么,但是对我来说,用空引号代替空引号似乎是非常不好的做法,将来可能会引起很多问题。

sky*_*ack 3

假设您正在尝试推断字段的类型,因此假设的名为f通常包含numbers。

这对我来说很有意义,因为您正在将强类型语言与非强类型语言结合起来。

一旦发生f实际上是null服务器端的情况,用空字符串代替值对您来说有意义吗null?对我来说不是。

我通常会邀请我的团队在处理这类问题时保持高度一致,因为对于一个拥有如此多变领域的新人来说,这可能会更加棘手。此外,说实话,空字符串并不告诉我您没有实际值,相反,在我看来您有一个实际值,而且它是一个空字符串!

也就是说,涉及null价值观的方法对我来说听起来更加连贯。

除了其他响应中已经讨论过的其他建议之外,另一种解决方案可能是清除这些字段,但它破坏了其父对象的结构,并且仍然可能导致比null在那里存在 s 更糟糕的问题。

在最坏的情况下,如果他们不想处理null值,他们可以引入一个层,用默认值代替它们,以绕过他们的立场。这样,您就可以说 api 是有意义的。