AutoBeanCodex.encode 省略了具有默认值的属性

Posted

技术标签:

【中文标题】AutoBeanCodex.encode 省略了具有默认值的属性【英文标题】:AutoBeanCodex.encode leaves out properties with default values 【发布时间】:2012-07-26 11:45:35 【问题描述】:

我正在通过转换为 JSON 的 AutoBeans 与 Web 服务通信。问题是 Web 服务希望 JSON 对象的每个属性都存在于请求中,而 AutoBeanCodex.encode() 似乎忽略了所有具有默认值的属性(尽管这些属性已明确设置)。

有没有办法也包含这些属性?

编辑: Thomas 的回答已经帮了很大的忙,但它仍然留下了一个小问题。即一个空数组(在我的例子中是List<Integer>)也被吞没了,显然是因为默认值是空数组而不是null

【问题讨论】:

【参考方案1】:

一种解决方法可能是使用包装类型而不是原始类型,例如Boolean 代替booleanInteger 代替int;这样,默认值将是null,而不是false0

【讨论】:

谢谢,从某种意义上说,这应该是一个明显的解决方法。当我忙着想办法改变这种行为,甚至找到关于它的最微小的文档时。 还有一个小问题,List<Integer> 也会产生一个遗漏的属性,而不是一个空数组。关于那个有什么提示吗? 有人找到解决方案了吗?我对 Date 有类似的问题。我需要 json 为我的日期值设置 null。谢谢

以上是关于AutoBeanCodex.encode 省略了具有默认值的属性的主要内容,如果未能解决你的问题,请参考以下文章

PHP中this,self,parent的区别

PHP中this,self,parent的区别

关于iOS的runtime

电子书 设计模式:可复用面向对象软件的基础.pdf

文字超出两行用省略号显示

文本溢出截断省略