250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 뉴스앱
    • 오블완
    • 티스토리챌린지

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    개발/kotlin

    JSON을 Kotlin DTO로 변환하는 방법 - Kotlinx.Serialization 활용 가이드

    2024. 8. 2. 09:00
    728x90
    반응형

    Kotlinx.Serialization은 Kotlin 언어에서 데이터 직렬화와 역직렬화를 수행하는 라이브러리입니다. 이는 Kotlin 멀티플랫폼 프로젝트에서 쉽게 사용할 수 있도록 설계되었으며, JSON, ProtoBuf, CBOR, XML 등 여러 포맷을 지원합니다. 여기서 JSON 포맷을 중심으로 설명하겠습니다.

     

    Kotlinx.Serialization의 주요 특징

    1. 다양한 포맷 지원: JSON, ProtoBuf, CBOR, XML 등 여러 포맷을 지원합니다.
    2. Kotlin 멀티플랫폼 지원: Kotlin/JVM, Kotlin/JS, Kotlin/Native 등 다양한 플랫폼에서 사용할 수 있습니다.
    3. 강력한 타입 안전성: Kotlin의 강력한 타입 시스템을 활용하여 직렬화와 역직렬화 과정에서 타입 안전성을 보장합니다.
    4. 애노테이션 기반 설정: 직렬화와 역직렬화 과정을 애노테이션으로 쉽게 설정할 수 있습니다.

     

    간단한 예제

    이제 JSON 문자열을 DTO(Data Transfer Object)로 변환하는 간단한 예제를 통해 Kotlinx.Serialization의 사용법을 알아보겠습니다.

    1. 라이브러리 의존성 추가

    먼저, 프로젝트의 build.gradle.kts 파일에 다음과 같이 Kotlinx.Serialization 의존성을 추가합니다.

    Kotlin Serialization을 사용하려면 Kotlin 컴파일러 1.4.0이상이 필요합니다. 1.4.0 이전 버전의 Kotlin은 Kotlin 직렬화의 안정적인 릴리스에서 지원되지 않습니다.

    plugins {
        kotlin("jvm") version "2.0.0"
        kotlin("plugin.serialization") version "2.0.0"
    }
    
    dependencies {
        implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
    }

    2. DTO 클래스 정의

    다음으로, JSON 데이터를 매핑할 DTO 클래스를 정의합니다. 이 클래스는 @Serializable 애노테이션으로 표시해야 합니다.

    import kotlinx.serialization.SerialName
    import kotlinx.serialization.Serializable
    
    @Serializable
    data class User(
        val name: String,
        val age: Int,
        @SerialName("Email")
        val email: String
    )

    3. JSON 문자열을 DTO로 변환

    이제 JSON 문자열을 DTO로 변환하는 코드를 작성합니다. Json 객체를 사용하여 문자열을 파싱하고 DTO로 변환합니다.

    import kotlinx.serialization.decodeFromString
    import kotlinx.serialization.json.Json
    
    fun main() {
        val jsonString = """
            {
                "name": "John Doe",
                "age": 30,
                "Email": "john.doe@example.com"
            }
        """
    
        // JSON 문자열을 User 객체로 변환
        val user: User = Json.decodeFromString(jsonString)
    
        // 결과 출력
        println(user)
    }

    위 코드에서는 Json.decodeFromString 함수를 사용하여 JSON 문자열을 User 객체로 변환합니다. 변환된 User 객체를 출력하면 다음과 같은 결과가 나타납니다.

    User(name=John Doe, age=30, email=john.doe@example.com)

    코드 설명

    1. DTO 클래스 정의: @Serializable 애노테이션을 사용하여 User 클래스가 직렬화와 역직렬화될 수 있음을 표시합니다.
    2. JSON 문자열 준비: JSON 형식의 문자열을 준비합니다.
    3. 역직렬화: Json.decodeFromString 함수를 사용하여 JSON 문자열을 User 객체로 변환합니다.
    4. 출력: 변환된 User 객체를 출력합니다.

    이 예제는 Kotlinx.Serialization 라이브러리를 사용하여 JSON 문자열을 Kotlin 데이터 클래스로 변환하는 기본적인 과정을 보여줍니다. 이를 통해 다양한 JSON 데이터를 쉽게 처리할 수 있습니다.

     

    참고자료

    • Kotlinx.Serialization 공식 문서
    • 관련 블로그 포스트
    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > kotlin' 카테고리의 다른 글

    람다 호출 축약 문법  (0) 2025.01.14
    Spring Boot JPA와 Kotlin Reflect 오류 해결 방법  (0) 2024.08.08
    object, companion object, 최상위 함수 정리  (0) 2024.07.06
    [라이브러리] [Proj4J] 좌표계 변환 방법  (0) 2024.07.04
    [kotlin] ByteArray를 Int, Int를 ByteArray로 변경하는 방법  (0) 2024.05.29
      '개발/kotlin' 카테고리의 다른 글
      • 람다 호출 축약 문법
      • Spring Boot JPA와 Kotlin Reflect 오류 해결 방법
      • object, companion object, 최상위 함수 정리
      • [라이브러리] [Proj4J] 좌표계 변환 방법
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바