2014-07-21 2 views
-1

JSON 속성을 오버라이드하여 긴 날짜 형식으로 날짜를 반환하려고합니다. 그러나 그것은 효과가없는 것처럼 보입니다. 나는 @JsonIgnore 주석을 제거하면Jackson : JSON 속성 오버라이드

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

나는 Conflicting getter definitions for property "dateTime": 예외를 얻을.

+0

getDateTime() 메서드에 JsonProperty 주석이 있습니까? –

+0

@AlexeyGavrilov 나는 일찍 잘못했다. 그냥 슈퍼 클래스를 확인했습니다. 아니,'@ JsonProperty' 주석이 없습니다. –

답변

2

오류 메시지는 자체적으로 설명합니다. 충돌하는 getter 정의가 있기 때문에 발생합니다.

게터 충돌을 해결하여 문제를 해결할 수 있습니다. 난 @JsonProperty 주석을 가지고 getDateTime() 메서드가 이미 있다고 가정합니다. 특수 효과를 제거하거나 @JsonIgnore을 추가하면됩니다. 두 가지 방법 모두 작동해야합니다. 메서드가 수퍼 클래스에 정의 된 경우 메서드를 재정의하고 주석을 다시 정의 할 수 있습니다.

+0

두 번째 파트에서 보지 못했습니다. 어떻게 기존의'getDateTime()'을 무시하겠습니까? 또 다른'getDateTime()'과'@ JsonIgnore'를 추가해야합니까? –

+0

답변을 업데이트했습니다. –

-1

데이터 표현 목적으로 주석을 사용하지 마십시오. 코드를 오염시킬 수 있으므로 디자인이 '표현 중심'이됩니다. 이 객체를 DTO로 사용하지 않는 한 다른 반 패턴입니다. 대신 표현의 우려를 분리 할 것이고, 이미 그것을 할 방법은 answer입니다.