목차
Realm + Retrofit 환경에서 StackOverflowException 문제
한 줄 요약 : Realm의 주장에 따르면 GSON에서 발생하는 버그이다.
2016-05-04#프로그래밍
💡 이 글은 작성된지 1년 이상 지났습니다. 정보글의 경우 최신 내용이 아닐 수 있음에 유의해주세요.
Retrofit을 통하여 RealmObject를 POST할 때 StackOverflowException이 발생한다.
일단 Realm측의 주장으로는 GSON의 버그이다.
무식한 방법이지만, GSON 컨버터가 아닌 다른 컨버터를 사용한다. 의외로 생각보다 복잡한 변경점은 없다.
Gradle에 다음을 추가한다.
compile 'com.squareup.retrofit2:converter-jackson'
이후 Retrofit 인스턴스 생성 부분을 다음과 같이 수정한다.
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(JacksonConverterFactory.create())
.build();
GSON의 경우, JSON 필드와 Java Object 변수에 Camelcase와 Snakecase가 섞여있으면 자동으로 매칭을 시켜준다. 하지만 일부 컨버터는 이를 지원하지 않는데, 각 컨버터에서 자체적으로 지원하는 매칭 기능을 사용해야한다.
Jackson에서의 예시는 다음과 같다.
@JsonProperty("money_amount")
private int moneyAmount;
관련된 글
Rails와 GitHub Actions에 커버리지 레포트를 달아보자
이 블로그의 CMS이기도 한 Shiori를 대폭 리팩토링하면서 테스트가 얼마나 잘 작성되어있는지 궁금해졌습니다.
Rails Global ID로 전역 객체 식별하기
Global ID는 Rails의 모든 객체를 식별할 수 있는 URI(Uniform Resource Identifier)입니다.
Ruby on WebAssembly: 살짝 맛보기
Ruby 3.2에 추가된 WebAssembly 지원을 간단하게 테스트해봅시다.
본 사이트의 저작물은 별도의 언급이 없는 한 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
© 2011 - 2024 Hoerin Doh, All rights reserved.
작성한 댓글은 giscus를 통해 GitHub Discussion에 저장됩니다.