2013-12-16 1 views
3

toString과 함께 여러 클래스가 있습니다. 이들 중 일부에는 콜렉션이 있습니다.Java toString은 json (gson impl)을 로그에 넣습니다.

gson으로 toString을 만드는 것이 좋습니다.

@Override 
public String toString() { 
    return new Gson().toJson(this); 
} 

나는 log4j 로깅하는 데 toString을 사용합니다. 나는 toString 출력에 대한 예외를 원하지 않는다. 누구든지이 구현을 사용합니까?

은 아마 중복 질문,하지만 난

+2

개체에 역 참조가있는 경우 문제가 발생합니다. –

+0

문자열의 "클래식"보다 훨씬 느립니다. – CorayThan

답변

1

GSON 출력이 복잡한 객체와 컬렉션의 "큰"될 수있는 정답을 찾을 수 없습니다.

일부 시나리오를 평가 한 후 특정 지점에만 Gson을 사용하는 것이 좋습니다.

log.info("[context scenario] Collection<Foo>" + new Gson().toJson(foos));

1

Apache Common의 Reflection toString Builder을 고려해 볼 수 있습니다. Gson보다 빠르지 만 새 필드를 모델에 추가 할 때 수정할 필요가 없습니다.

@Override 
public String toString() { 
    return ReflectionToStringBuilder.toString(this); 
} 
+0

좋은 "toString"대안, 그러나 Gson과 함께 우리는 deserialization,''newGson() .Json (...)''을 가지고 있으며, 일부 모의 객체를 생성하기 위해 직렬화를 사용하고 있습니다. –