노력과 삽질 퇴적물
에러: jackson mapper writeValueAsString 무한호출 본문
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 | 초안 |
'📂게임개발 note > 에러&버그' 카테고리의 다른 글
에러: 디스플레이 드라이버 시작 실패 (0) | 2018.05.17 |
---|---|
에러: Can't connect to MySQL server on '127.0.0.1' (0) | 2017.03.14 |
에러: 자마린 axml 실행오류 (0) | 2017.01.05 |
에러:No Android device found! (0) | 2016.11.13 |
에러: Failed to re-package resources. (0) | 2016.10.04 |