kotlinx serialization을 사용할 때 주의사항

pnlkc·2023년 3월 14일
0
post-thumbnail
post-custom-banner

Kotlinx Serialization을 사용할 때 주의사항


Retrofit의 ConverterFactory로 Kotlinx Serialization을 사용하여 Json을 직렬화를 하는 과정을 공부하고 있었는데, 만들고 있는 앱이 계속 다운 되는 현상이 발생했습니다.

로그를 살펴 보니, 아래와 같은 오류가 발생하고 있었습니다.

No valid NAT64 prefix (102, <unspecified>/0)
No valid NAT64 prefix (104, <unspecified>/0)
Access denied finding property "ro.vendor.display.type"
Fail to get file list com.android.providers.contacts
getFolderSize() : Exception_1 = java.lang.NullPointerException: Attempt to get length of null array

자세히는 모르겠지만 분명 인터넷과 통신이 제대로 이루어지고 있지 않아 결과를 리스트로 반환하지 못하고 있는 것으로 생각이 되었습니다.

코드를 부분적으로 계속 수정해가면서 원인을 찾아보니, Kotlinx Serialization를 잘못 사용한 것이 원인이었습니다.

Kotlinx Serialization은 Gson과 달리 Json을 코틀린 객체로 직렬화 할 때 Data Class에 Json의 필드값이 모두 존재해야 하는데 그 부분을 놓쳐서 에러가 발생했던 것입니다.

예를 들어, 아래와 같은 Json 데이터가 있다면

{
  "name": "홍길동",
  "email": "honggilldong@abc.com",
  "phone": "123-4567",
  "address": "OO도 OO시 OO구"
}

다음과 같이 Json 데이터의 필드를 모두 포함하는 Data Class가 있어야 합니다.

import kotlinx.serialization.Serializable

@Serializable
data class Person(
    val name: String,
    val email: String,
    val phone: String,
    val address: String
)

즉, JSON 데이터의 필드를 모두 포함하는 데이터 클래스를 선언해야, kotlinx serialization을 사용하여 JSON 데이터를 직렬화할 수 있습니다.


profile
안드로이드 개발 공부 블로그
post-custom-banner

0개의 댓글