노력과 삽질 퇴적물

에러: jackson mapper writeValueAsString 무한호출 본문

프로그래밍note/에러&버그

에러: jackson mapper writeValueAsString 무한호출

MTG 2019. 6. 30. 23:57


mapper.writevalueasstring recursive

  OR
xxx.xxx["json"]->xxx.xxx["json"]->xxx.xxx["json"]->xxx.xxx["json"]
  OR
chain reference등으로


mapper.writeValueAsString(this);로 스트링으로 뽑아서 볼려고 할때 발생한 버그로

원래 mapper.writeValueAsString를 사용하는데 별 문제가 없었지만,

함수명을 명명법에 맞춰 고치는 과정에서 문제가 발생했습니다.





해법.


//정상 작동 버전

publuc String convertJson()

{

   mapper.writeValueAsString(this);

}

//문제가 발생 버전

publuc String getJson()

{

   mapper.writeValueAsString(this);

}


에러로그에서 xxx.xxx["json"]는
다른 스택오버플로우 글에서는 클래스 멤버 변수가 기입된 케이스들인데, 제 코드에서는 json이라는 멤버 변수가 없습니다.

jackson mapper에 흔한 버그(common bug)라고 나왔지만,

잠시 짚고 넘어갈것이

jackson은 기본적으로 멤버 변수를 getter/setter를 생성해둡니다.


즉, 제 경우에는

json내 필드명과 무관한 함수명에 get/set류를 사용해서 발생한겁니다.

함수의 접두어를 다른걸 쓰니 정상가동 확인됐습니다.






기타. 변경이력


일자

변경이력

2019-06-30

 초안