Data Classes এর সাথে Serialization
Kotlin এর Data Classes হল এমন ক্লাস যা মূলত ডেটা ধারণ করার জন্য তৈরি করা হয়। এটি বিভিন্ন উপকারিতা যেমন auto-generated functions (like equals(), hashCode(), and toString()) প্রদান করে এবং ডেটা পরিচালনা করার ক্ষেত্রে সহজতা নিয়ে আসে। Kotlin Serialization ব্যবহার করে Data Classes কে JSON, ProtoBuf, এবং অন্যান্য ফরম্যাটে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করা যায়।
নিচে Data Classes এর সাথে Serialization কিভাবে কাজ করে তা নিয়ে বিস্তারিত আলোচনা করা হলো।
১. Data Class তৈরি করা
প্রথমে, আপনাকে একটি Data Class তৈরি করতে হবে যা সিরিয়ালাইজ করা হবে।
import kotlinx.serialization.Serializable
@Serializable
data class User(val name: String, val age: Int)
ব্যাখ্যা:
- এখানে
Userএকটি Data Class, যা@Serializableঅ্যানোটেশন দিয়ে চিহ্নিত করা হয়েছে, যা এটিকে সিরিয়ালাইজেবেল হিসেবে তৈরি করে।
২. Serialization এবং Deserialization
i) Data Class কে JSON এ সিরিয়ালাইজ করা
আপনার Data Class এর একটি অবজেক্ট তৈরি করুন এবং সেটিকে JSON এ রূপান্তর করুন।
উদাহরণ:
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
fun main() {
val user = User("Alice", 30)
// Serialize to JSON
val jsonString = Json.encodeToString(user)
println(jsonString) // আউটপুট: {"name":"Alice","age":30}
}
ব্যাখ্যা:
- এখানে
Json.encodeToString()ফাংশন ব্যবহার করেUserঅবজেক্টটি JSON ফরম্যাটে রূপান্তর করা হয়েছে।
ii) JSON থেকে Data Class এ ডেসিরিয়ালাইজ করা
JSON থেকে Data Class এ ডেটা ফিরিয়ে আনতে Json.decodeFromString() ব্যবহার করুন।
উদাহরণ:
import kotlinx.serialization.decodeFromString
fun main() {
val jsonString = """{"name":"Bob","age":25}"""
// Deserialize from JSON
val user = Json.decodeFromString<User>(jsonString)
println("Name: ${user.name}, Age: ${user.age}") // আউটপুট: Name: Bob, Age: 25
}
ব্যাখ্যা:
- এখানে JSON স্ট্রিং থেকে
Userঅবজেক্টে রূপান্তর করা হয়েছে।
৩. Nested Data Classes Serialization
আপনি Data Classes এর মধ্যে নেস্টেড Data Classes ব্যবহার করতে পারেন।
উদাহরণ:
@Serializable
data class Address(val city: String, val country: String)
@Serializable
data class User(val name: String, val age: Int, val address: Address)
fun main() {
val address = Address("New York", "USA")
val user = User("Alice", 30, address)
// Serialize to JSON
val jsonString = Json.encodeToString(user)
println(jsonString) // আউটপুট: {"name":"Alice","age":30,"address":{"city":"New York","country":"USA"}}
}
ব্যাখ্যা:
- এখানে
Userক্লাসেAddressক্লাসের একটি অবজেক্ট অন্তর্ভুক্ত রয়েছে। Serialization এর সময় এটি সঠিকভাবে কাজ করে।
৪. Custom Serialization
আপনি Data Classes এর জন্য কাস্টম Serialization এবং Deserialization লজিকও তৈরি করতে পারেন।
উদাহরণ:
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializer
import kotlinx.serialization.descriptors.buildClassSerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
@Serializable
data class User(val name: String, val age: Int)
@Serializer(forClass = User::class)
object UserSerializer : KSerializer<User> {
override val descriptor = buildClassSerialDescriptor("User")
override fun serialize(encoder: Encoder, value: User) {
encoder.encodeString("${value.name}, ${value.age}")
}
override fun deserialize(decoder: Decoder): User {
val (name, age) = decoder.decodeString().split(", ")
return User(name, age.toInt())
}
}
ব্যাখ্যা:
- এখানে
UserSerializerক্লাস কাস্টম Serialization এবং Deserialization লজিক সংজ্ঞায়িত করে।
উপসংহার
Kotlin Data Classes এর সাথে Serialization একটি সহজ এবং কার্যকর প্রক্রিয়া। @Serializable অ্যানোটেশন ব্যবহার করে, আপনি সহজে JSON এবং অন্যান্য ফরম্যাটে Data Classes কে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে পারেন। Kotlin Serialization ডেটা হ্যান্ডলিংকে আরও সহজ ও নিরাপদ করে তোলে।
Read more