본문 바로가기

카테고리 없음

[Kotlin] json string to List<Class> by jackson

jacksonObjectMapper().readValue(jsonString, SomeClass::class.java)

위와 같이 json 형태의 문자열을 특정 데이터 클래스로 변환할 수 있다.

그러나 가끔씩 최상위 키 대신 다짜고짜 리스트로 시작하는 경우가 있다.

 

//보통의 key-value 예제
"{"name":"injuk", "age":"99"}"

//리스트로 시작하는 예제
"[{"name":"injuk", "age":"99"}]"

리스트로 시작할 때에 위 방식으로 파싱 시도 시 에러가 떨어진다.

someClass::class.java 자리에 억지로 List<SomeClass::class.java> 등과 같이 끼워넣으면 컴파일조차 되지 않는다.

해결법은 아래와 같다.

jacksonObjectMapper().readValue(response.body, object : TypeReference<List<SomeClass>>() {})

바로 TypeReference를 활용하는 것이다.

자세한 설명은 추후 추가 예정

 

더 나은 방법이 있다면 댓글로 공유해주시길 바랍니다.