杰克逊:覆盖JSON属性

时间:2014-07-21 14:47:11

标签: java json jackson

尝试覆盖JSON属性以长格式返回日期。但它似乎没有用。

@JsonIgnore
@JsonProperty("dateTime")
public long getDateTimeInLong() {
    return getDateTime().getTime(); //belongs to super class. It is an AspectJ implementation.
}

如果我删除@JsonIgnore注释,我会获得Conflicting getter definitions for property "dateTime":例外。

2 个答案:

答案 0 :(得分:2)

错误消息描述了自己。之所以发生这种情况,是因为您的getter定义存在冲突。

您可以通过解决getter冲突来修复它。我想你已经拥有getDateTime()注释的@JsonProperty方法。您只需删除注释或添加@JsonIgnore即可。两种方式都应该有效。如果方法是在超类中定义的,则可以覆盖该方法并重新定义其注释。

答案 1 :(得分:-1)

我会避免使用注释进行数据表示,因为它可能会污染您的代码,设计将变为“以表示为中心”。除非您将该对象用作DTO,否则这是另一种反模式。相反,我会单独表达问题,已经有answer如何做到这一点。