1677840020
Kotlin 및 Jetpack Compose에서 데이터를 직렬화하는 방법을 알아보세요. Jetpack Compose 프로젝트에서 직렬화를 설정합니다. 데이터 클래스를 직렬화하는 방법. 데이터 클래스를 역직렬화하는 방법.
직렬화는 한 형식의 데이터를 저장할 수 있는 다른 형식으로 변환하는 프로세스입니다.
데이터베이스로 작업하거나 서버에서 데이터를 가져온 적이 있다면 이 모든 것이 익숙할 것입니다. 그렇지 않다면 제대로 찾아오셨습니다.
이 자습서에서는 다음을 살펴보겠습니다.
Jetpack Compose에서 직렬화의 특별한 점은 무엇인가요? 본질적으로 일반 Kotlin Android 프로젝트와 큰 차이는 없습니다. 유일한 차이점은 설정에 있습니다.
Jetpack Compose의 각 버전은 호환되는 Kotiln 버전과 일치합니다. kotlin 직렬화 라이브러리의 각 버전은 특정 버전의 Kotlin과도 호환됩니다. 따라서 이 삼각대의 세 부분이 서로 호환되는지 확인해야 합니다.
어떻게 그럴 수 있니?
참조할 첫 번째 리소스는 Compose to Kotlin Compatibility Map 입니다 .
여기에서 어떤 버전의 Jetpack Compose가 어떤 Kotlin 버전에 해당하는지 확인할 수 있습니다.
두 번째로 필요한 리소스는 kotlin 직렬화 라이브러리의 릴리스 페이지 입니다. 여기에서 어떤 라이브러리 버전이 어떤 Kotlin 버전과 호환되는지 확인할 수 있습니다.
혼란스러운? 😕
예를 들어 설명하겠습니다.
프로젝트 레벨 build.gradle 파일로 이동하고 buildscript 개체 내부의 종속성 섹션에서 필요한 버전의 kotlin 직렬화 라이브러리에 대한 클래스 경로를 입력합니다.
dependencies {
...
classpath "org.jetbrains.kotlin:kotlin-serialization:X.Y.Z"
}
그런 다음 애플리케이션 build.gradle 파일로 이동하여 다음 두 가지 작업을 수행합니다.
plugins {
...
id 'org.jetbrains.kotlin.plugin.serialization'
}
2. 파일 하단의 종속성 섹션 내부에 구현 'org.jetbrains.kotlinx:kotlinx-serialization-json:XYZ'를 추가합니다 .
dependencies {
...
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:X.Y.Z'
}
프로젝트를 동기화하면 준비가 완료됩니다.
라이브러리의 json 형식을 사용하고 있지만 지원되는 다른 형식도 있습니다.
⚠️ 오류가 발생하면 입력한 버전이 올바른지 확인하세요.
직렬화하고 나중에 역직렬화할 수 있는 것을 가지려면 데이터 클래스로 작업해야 합니다.
데이터 클래스 생성은 간단합니다. Android Studio를 사용하는 경우 프로젝트 모듈 내부를 마우스 오른쪽 버튼으로 클릭하고 New Kotlin 파일을 선택합니다. 클래스 이름을 입력한 다음 그 앞에 데이터 키워드를 추가하십시오.
이 문서의 편의상 사용자 목록을 반환하는 API로 작업한다고 가정해 보겠습니다. 각 사용자 개체에는 가질 수 있는 속성 범위가 있습니다(몇 가지 예를 들자면).
데이터 클래스를 직렬화할 수 있게 하려면 클래스 선언 위에 @Serializable 주석을 추가하기만 하면 됩니다.
@Serializable
data class UserModel(
val firstName: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long
)
꽤 멋지죠?
더 있습니다.
사용자의 이름을 담을 변수는 firstName으로 기록됩니다. 즉, 서버의 응답에서 동일한 이름의 필드로 반환해야 합니다.
API 응답에서 키가 camelCase가 아니라 kebab_case로 작성되는 경우가 있습니다. 이는 이름의 키가 first_name일 수 있음을 의미합니다. 이 경우 다음과 같이 작성해야 합니다.
@Serializable
data class UserModel(
val first_name: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long
)
그러나 이는 Kotlin에서 속성 이름에 대한 규칙이 아닙니다 .
그래서 우리가 뭘 할 수 있지?
@SerialName 주석을 사용할 수 있습니다 . 이를 통해 응답에서 필드 이름을 표시한 다음 속성으로 무엇이든 작성할 수 있습니다.
@Serializable
data class UserModel(
@SerialName("first_name")
val firstName: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long
)
이제 데이터 클래스가 설정되었으므로 작업의 결실을 즐기자. 데이터 클래스를 직렬화해야 할 때마다 Json.encodeToString 메서드 를 사용합니다 .
val dataAsString: String = Json.encodeToString(user)
위의 코드 줄을 실행하면 데이터 클래스를 문자열 형식으로 가져옵니다.
데이터를 역직렬화하는 것은 직렬화만큼 간단합니다. Json.decodeFromString 메서드를 사용합니다 .
val user: UserModel = Json.decodeFromString<UserModel>(dataAsString)
✋ type 매개변수(<UserModel>)를 사용하여 역직렬화하려는 데이터 유형을 지정했습니다.
사진: Immo Wegmann / Unsplash
추가 크레딧을 받을 시간입니다.
데이터 클래스에 직렬화하고 싶지 않은 필드가 있다고 가정해 보겠습니다. UserModel 클래스를 사용하는 경우 사용자의 실제 사진(비트맵)을 원한다고 상상해 보십시오.
@Serializable
data class UserModel(
@SerialName("first-name")
val firstName: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long,
var photo: Bitmap?
)
이것은 API 호출에서 얻을 수 있는 것이 아닌데 어떻게 제외할 수 있습니까? 그렇지 않으면 직렬화가 실패하기 때문입니다.
여기서 우리를 구하는 것은 @Transient 주석 입니다 .
@Serializable
data class UserModel(
@SerialName("first-name")
val firstName: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long,
@Transient
var photo: Bitmap?
)
이렇게 하면 표시된 필드가 직렬화 및 역직렬화되지 않도록 제외됩니다.
읽어 주셔서 감사합니다! 행복한 연재.
#kotlin #jetpack
1677840020
Kotlin 및 Jetpack Compose에서 데이터를 직렬화하는 방법을 알아보세요. Jetpack Compose 프로젝트에서 직렬화를 설정합니다. 데이터 클래스를 직렬화하는 방법. 데이터 클래스를 역직렬화하는 방법.
직렬화는 한 형식의 데이터를 저장할 수 있는 다른 형식으로 변환하는 프로세스입니다.
데이터베이스로 작업하거나 서버에서 데이터를 가져온 적이 있다면 이 모든 것이 익숙할 것입니다. 그렇지 않다면 제대로 찾아오셨습니다.
이 자습서에서는 다음을 살펴보겠습니다.
Jetpack Compose에서 직렬화의 특별한 점은 무엇인가요? 본질적으로 일반 Kotlin Android 프로젝트와 큰 차이는 없습니다. 유일한 차이점은 설정에 있습니다.
Jetpack Compose의 각 버전은 호환되는 Kotiln 버전과 일치합니다. kotlin 직렬화 라이브러리의 각 버전은 특정 버전의 Kotlin과도 호환됩니다. 따라서 이 삼각대의 세 부분이 서로 호환되는지 확인해야 합니다.
어떻게 그럴 수 있니?
참조할 첫 번째 리소스는 Compose to Kotlin Compatibility Map 입니다 .
여기에서 어떤 버전의 Jetpack Compose가 어떤 Kotlin 버전에 해당하는지 확인할 수 있습니다.
두 번째로 필요한 리소스는 kotlin 직렬화 라이브러리의 릴리스 페이지 입니다. 여기에서 어떤 라이브러리 버전이 어떤 Kotlin 버전과 호환되는지 확인할 수 있습니다.
혼란스러운? 😕
예를 들어 설명하겠습니다.
프로젝트 레벨 build.gradle 파일로 이동하고 buildscript 개체 내부의 종속성 섹션에서 필요한 버전의 kotlin 직렬화 라이브러리에 대한 클래스 경로를 입력합니다.
dependencies {
...
classpath "org.jetbrains.kotlin:kotlin-serialization:X.Y.Z"
}
그런 다음 애플리케이션 build.gradle 파일로 이동하여 다음 두 가지 작업을 수행합니다.
plugins {
...
id 'org.jetbrains.kotlin.plugin.serialization'
}
2. 파일 하단의 종속성 섹션 내부에 구현 'org.jetbrains.kotlinx:kotlinx-serialization-json:XYZ'를 추가합니다 .
dependencies {
...
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:X.Y.Z'
}
프로젝트를 동기화하면 준비가 완료됩니다.
라이브러리의 json 형식을 사용하고 있지만 지원되는 다른 형식도 있습니다.
⚠️ 오류가 발생하면 입력한 버전이 올바른지 확인하세요.
직렬화하고 나중에 역직렬화할 수 있는 것을 가지려면 데이터 클래스로 작업해야 합니다.
데이터 클래스 생성은 간단합니다. Android Studio를 사용하는 경우 프로젝트 모듈 내부를 마우스 오른쪽 버튼으로 클릭하고 New Kotlin 파일을 선택합니다. 클래스 이름을 입력한 다음 그 앞에 데이터 키워드를 추가하십시오.
이 문서의 편의상 사용자 목록을 반환하는 API로 작업한다고 가정해 보겠습니다. 각 사용자 개체에는 가질 수 있는 속성 범위가 있습니다(몇 가지 예를 들자면).
데이터 클래스를 직렬화할 수 있게 하려면 클래스 선언 위에 @Serializable 주석을 추가하기만 하면 됩니다.
@Serializable
data class UserModel(
val firstName: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long
)
꽤 멋지죠?
더 있습니다.
사용자의 이름을 담을 변수는 firstName으로 기록됩니다. 즉, 서버의 응답에서 동일한 이름의 필드로 반환해야 합니다.
API 응답에서 키가 camelCase가 아니라 kebab_case로 작성되는 경우가 있습니다. 이는 이름의 키가 first_name일 수 있음을 의미합니다. 이 경우 다음과 같이 작성해야 합니다.
@Serializable
data class UserModel(
val first_name: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long
)
그러나 이는 Kotlin에서 속성 이름에 대한 규칙이 아닙니다 .
그래서 우리가 뭘 할 수 있지?
@SerialName 주석을 사용할 수 있습니다 . 이를 통해 응답에서 필드 이름을 표시한 다음 속성으로 무엇이든 작성할 수 있습니다.
@Serializable
data class UserModel(
@SerialName("first_name")
val firstName: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long
)
이제 데이터 클래스가 설정되었으므로 작업의 결실을 즐기자. 데이터 클래스를 직렬화해야 할 때마다 Json.encodeToString 메서드 를 사용합니다 .
val dataAsString: String = Json.encodeToString(user)
위의 코드 줄을 실행하면 데이터 클래스를 문자열 형식으로 가져옵니다.
데이터를 역직렬화하는 것은 직렬화만큼 간단합니다. Json.decodeFromString 메서드를 사용합니다 .
val user: UserModel = Json.decodeFromString<UserModel>(dataAsString)
✋ type 매개변수(<UserModel>)를 사용하여 역직렬화하려는 데이터 유형을 지정했습니다.
사진: Immo Wegmann / Unsplash
추가 크레딧을 받을 시간입니다.
데이터 클래스에 직렬화하고 싶지 않은 필드가 있다고 가정해 보겠습니다. UserModel 클래스를 사용하는 경우 사용자의 실제 사진(비트맵)을 원한다고 상상해 보십시오.
@Serializable
data class UserModel(
@SerialName("first-name")
val firstName: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long,
var photo: Bitmap?
)
이것은 API 호출에서 얻을 수 있는 것이 아닌데 어떻게 제외할 수 있습니까? 그렇지 않으면 직렬화가 실패하기 때문입니다.
여기서 우리를 구하는 것은 @Transient 주석 입니다 .
@Serializable
data class UserModel(
@SerialName("first-name")
val firstName: String,
val lastName: String,
val age: Int,
val birthdate: Date,
val id: Long,
@Transient
var photo: Bitmap?
)
이렇게 하면 표시된 필드가 직렬화 및 역직렬화되지 않도록 제외됩니다.
읽어 주셔서 감사합니다! 행복한 연재.
#kotlin #jetpack
1621508255
We are a prime Kotlin app developer in India. We build and provide the best personalized Android apps, migration services, ongoing maintenance, and management.
We have the most efficient Kotlin developers that build ultramodern, interactive, and secure mobile apps. The technologies we use to create the most advanced Kotlin apps are AR/VR, AI/ML, IoT, etc.
Hire Kotlin app developers in India. Meet us, and we will help you meet all of your technology requirements.
#kotlin app development company india #hire kotlin developers india #kotlin app development company #hire kotlin developers #kotlin development agency #kotlin app programmers
1616586592
The most popular language used for Android app development is Kotlin and recently Kotlin also launched its Cross-Platform app development language Kotlin Multiplatform.
So are you looking to launch a mobile using Kotlin as your Programming Language?
Then you are at the right place as WebClues Infotech offers services to Hire a Dedicated Kotlin Developer who can develop an interactive and rich user-experienced mobile app. Also, WebClues has a flexible pricing model that the business can choose according to its most suitable structure.
So what are you waiting for? Hire a dedicated Kotlin developer from a reputed Web & Mobile app development agency that has successfully served more than 600+ clients.
Book Free Interview: https://bit.ly/3dDShFg
#hire dedicated kotlin developer #hire dedicated kotlin developer #hire kotlin developers #hire kotlin developer #hire dedicated kotlin app developer #hire kotlin app developers india
1609415481
Do you have an idea to develop an android app using Kotlin?
Are you looking for the best Kotlin app development company in the USA? We at AppClues Infotech offering versatile mobile app development services in the USA. We provide custom mobile app development solutions as per your specific business needs with the prevailing market trending technology & features.
Hire our top-notch Kotlin app designers & developers for your project at a cost-effective price.
Our Kotlin App Development Services:
• Custom Android App Development
• Kotlin AR/VR App Development
• Kotlin App UI/UX Design
• Kotlin App QA & Testing- code Optimization
• Kotlin App Migrations
• Kotlin App Maintenance and Upgrades
For more info:
Website: https://www.appcluesinfotech.com/
Email: info@appcluesinfotech.com
Call: +1-978-309-9910
#kotlin android app development company #best kotlin android app development usa #kotlin android app development #kotlin for android app development #kotlin mobile app development service #create android app with kotlin
1606541075
Looking for a top Kotlin Android app development company for creating an Android app project? AppClues Infotech is a top Kotlin Android app development company in USA that delivers the most scalable and efficient Kotlin app development services globally.
For more info:
Website: https://www.appcluesinfotech.com/
Email: info@appcluesinfotech.com
Call: +1-978-309-9910
#kotlin android app development company #best kotlin android app development usa #kotlin android app development #kotlin for android app development #kotlin mobile app development service #create android app with kotlin