Kotlin Serialization এবং Data Handling
Kotlin Serialization একটি শক্তিশালী ফিচার যা Kotlin অবজেক্টগুলিকে JSON, ProtoBuf, CBOR, এবং অন্যান্য ফরম্যাটে রূপান্তর করতে সাহায্য করে। এটি ডেটা হ্যান্ডলিংকে আরও সহজ এবং কার্যকর করে তোলে, বিশেষ করে নেটওয়ার্ক কল, ডেটাবেস সঞ্চয়, এবং ফাইল লেখার সময়। নিচে Kotlin Serialization এবং Data Handling নিয়ে বিস্তারিত আলোচনা করা হলো।
১. Kotlin Serialization সেটআপ
Kotlin Serialization ব্যবহার করার জন্য প্রথমে প্রোজেক্টে প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করতে হবে।
i) Gradle সেটআপ
build.gradle.kts (বা build.gradle) ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করুন:
plugins {
kotlin("plugin.serialization") version "1.8.0"
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0")
}
২. Kotlin Serialization উদাহরণ
i) Data Class তৈরি করা
প্রথমে, একটি data class তৈরি করুন যা সিরিয়ালাইজ করা হবে।
import kotlinx.serialization.Serializable
@Serializable
data class User(val name: String, val age: Int)
ব্যাখ্যা:
@Serializableঅ্যানোটেশন দিয়ে এই ক্লাসটি সিরিয়ালাইজেবেল হিসেবে চিহ্নিত করা হয়েছে।
ii) 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 ফরম্যাটে রূপান্তর করা হয়েছে।
iii) JSON থেকে ডেটা ডেসিরিয়ালাইজ করা
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.decodeFromString()ফাংশন ব্যবহার করে JSON থেকেUserঅবজেক্টে রূপান্তর করা হয়েছে।
৩. Data Handling ব্যবহার
Kotlin Serialization এর সাহায্যে আপনি বিভিন্ন ডেটা স্ট্রাকচার যেমন তালিকা এবং মানচিত্র সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে পারেন।
i) List সিরিয়ালাইজ করা
import kotlinx.serialization.encodeToString
fun main() {
val users = listOf(User("Alice", 30), User("Bob", 25))
// Serialize a List of Users
val jsonString = Json.encodeToString(users)
println(jsonString) // আউটপুট: [{"name":"Alice","age":30},{"name":"Bob","age":25}]
}
ii) Map সিরিয়ালাইজ করা
fun main() {
val userMap = mapOf("user1" to User("Alice", 30), "user2" to User("Bob", 25))
// Serialize a Map of Users
val jsonString = Json.encodeToString(userMap)
println(jsonString) // আউটপুট: {"user1":{"name":"Alice","age":30},"user2":{"name":"Bob","age":25}}
}
৪. Custom Serialization
আপনি যদি কোনো কাস্টম লজিক প্রয়োগ করতে চান, তবে Serializer তৈরি করতে পারেন।
উদাহরণ:
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializer
import kotlinx.serialization.descriptors.buildClassSerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
@Serializer(forClass = User::class)
object UserSerializer : KSerializer<User> {
override val descriptor = buildClassSerialDescriptor("User")
override fun serialize(encoder: Encoder, value: User) {
// Custom serialization logic
encoder.encodeString("${value.name}, ${value.age}")
}
override fun deserialize(decoder: Decoder): User {
// Custom deserialization logic
val (name, age) = decoder.decodeString().split(", ")
return User(name, age.toInt())
}
}
উপসংহার
Kotlin Serialization এবং Data Handling কোডের কার্যকারিতা এবং নিরাপত্তা বাড়াতে সহায়ক। এটি JSON, ProtoBuf, এবং অন্যান্য ফরম্যাটে ডেটা সংরক্ষণ এবং পুনরুদ্ধারের প্রক্রিয়াকে সহজ করে। Kotlin-এর এই ফিচার ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের ডেটা পরিচালনা করতে পারেন অত্যন্ত কার্যকরীভাবে।
Kotlin Serialization লাইব্রেরি ব্যবহার করে Data Serialize করা
Kotlin Serialization হল একটি শক্তিশালী লাইব্রেরি যা আপনাকে কটলিন অবজেক্টগুলিকে JSON, XML, Protobuf ইত্যাদি ফর্ম্যাটে সঞ্চয় করতে এবং পুনরুদ্ধার করতে সহায়তা করে। এটি ডেটা সিরিয়ালাইজেশন এবং ডেসিরিয়ালাইজেশন প্রক্রিয়াকে সহজ করে তোলে। নিচে Kotlin Serialization ব্যবহার করে ডেটা সিরিয়ালাইজ করার প্রক্রিয়া এবং উদাহরণ দেওয়া হলো।
১. Kotlin Serialization লাইব্রেরি সেটআপ
প্রথমে, আপনার প্রকল্পে Kotlin Serialization লাইব্রেরি যুক্ত করতে হবে।
i) Gradle সেটআপ
আপনার build.gradle (Module) ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যুক্ত করুন:
plugins {
id 'kotlinx-serialization'
}
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0"
}
এছাড়াও, আপনার build.gradle (Project) ফাইলে কটলিনের প্লাগইন যুক্ত করুন:
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.5.30'
id 'kotlinx-serialization' version '1.5.0' // Add this line
}
২. ডেটা ক্লাস তৈরি করা
Kotlin Serialization লাইব্রেরি ব্যবহার করতে হলে প্রথমে একটি ডেটা ক্লাস তৈরি করতে হবে। আপনি @Serializable অ্যানোটেশন ব্যবহার করে ক্লাসটি চিহ্নিত করবেন।
উদাহরণ:
import kotlinx.serialization.Serializable
@Serializable
data class User(
val name: String,
val age: Int,
val email: String
)
ব্যাখ্যা:
- এখানে
Userক্লাসটি@Serializableঅ্যানোটেশন সহ চিহ্নিত করা হয়েছে, যা Serialization লাইব্রেরিকে নির্দেশ করে যে এই ক্লাসের অবজেক্টগুলি সঞ্চয় এবং পুনরুদ্ধার করা যাবে।
৩. ডেটা সিরিয়ালাইজ করা
ডেটা সিরিয়ালাইজ করার জন্য, আপনি Json.encodeToString ফাংশন ব্যবহার করতে পারেন।
উদাহরণ:
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
fun main() {
val user = User(name = "Alice", age = 30, email = "alice@example.com")
// Serialize the User object to JSON
val jsonString = Json.encodeToString(user)
println(jsonString) // আউটপুট: {"name":"Alice","age":30,"email":"alice@example.com"}
}
ব্যাখ্যা:
- এখানে
Json.encodeToString(user)ব্যবহার করেUserঅবজেক্টটি JSON ফরম্যাটে সিরিয়ালাইজ করা হয়েছে।
৪. ডেটা ডেসিরিয়ালাইজ করা
ডেটা ডেসিরিয়ালাইজ করার জন্য, আপনি Json.decodeFromString ফাংশন ব্যবহার করতে পারেন।
উদাহরণ:
import kotlinx.serialization.decodeFromString
fun main() {
val jsonString = """{"name":"Alice","age":30,"email":"alice@example.com"}"""
// Deserialize the JSON string to User object
val user: User = Json.decodeFromString(jsonString)
println(user) // আউটপুট: User(name=Alice, age=30, email=alice@example.com)
}
ব্যাখ্যা:
- এখানে
Json.decodeFromString(jsonString)ব্যবহার করে JSON স্ট্রিংটিUserঅবজেক্টে রূপান্তরিত করা হয়েছে।
৫. সুবিধা ও প্রয়োজনীয়তা
- সুবিধা: Kotlin Serialization লাইব্রেরি কোডের সঙ্গতি এবং কার্যকারিতা বাড়ায়, এবং JSON বা অন্যান্য ফরম্যাটে ডেটা পরিচালনা করা সহজ করে।
- প্রয়োজনীয়তা: এটি API কল, ডেটাবেসে তথ্য সঞ্চয় এবং পুনরুদ্ধার, অথবা অন্যান্য সিস্টেমের মধ্যে ডেটা আদান-প্রদানে খুবই গুরুত্বপূর্ণ।
উপসংহার
Kotlin Serialization লাইব্রেরি ব্যবহার করে ডেটা সিরিয়ালাইজ করা এবং ডেসিরিয়ালাইজ করা একটি সহজ এবং কার্যকর প্রক্রিয়া। এই লাইব্রেরিটি Kotlin ডেভেলপারদের জন্য ডেটার পরিচালনার প্রক্রিয়াকে সহজ এবং নিরাপদ করে তোলে।
ডেটা স্টোরেজ এবং স্থানান্তরের জন্য JSON (JavaScript Object Notation) এবং XML (eXtensible Markup Language) দুটি জনপ্রিয় ফরম্যাট। কটলিনে JSON এবং XML Parsing খুবই গুরুত্বপূর্ণ, বিশেষ করে যখন আপনাকে API থেকে ডেটা নিতে হয় বা বিভিন্ন ফাইল ফরম্যাটের সাথে কাজ করতে হয়।
JSON এবং XML Parsing
নিচে JSON এবং XML Parsing নিয়ে বিস্তারিত আলোচনা করা হলো।
১. JSON Parsing
JSON একটি হালকা ওজনের ডেটা বিন্যাস যা সহজে পড়া এবং লিখা যায় এবং প্রোগ্রামিং ভাষাগুলোর মধ্যে সহজেই স্থানান্তর করা যায়। কটলিনে JSON Parsing এর জন্য সাধারণত kotlinx.serialization লাইব্রেরি বা Gson ব্যবহৃত হয়।
i) kotlinx.serialization ব্যবহার করে JSON Parsing
Dependency যুক্ত করা:
Gradle এর build.gradle.kts ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যুক্ত করুন:
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0")
}
Kotlin Data Class তৈরি করুন:
import kotlinx.serialization.Serializable
@Serializable
data class User(val name: String, val age: Int)
JSON Parsing উদাহরণ:
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
fun main() {
val jsonString = """{"name":"Alice","age":30}"""
// JSON Parsing
val user = Json.decodeFromString<User>(jsonString)
println("Name: ${user.name}, Age: ${user.age}") // আউটপুট: Name: Alice, Age: 30
}
ব্যাখ্যা:
@Serializableannotation ব্যবহার করে ক্লাসটি Serializable হিসেবে চিহ্নিত করা হয়েছে।Json.decodeFromStringফাংশন ব্যবহার করে JSON স্ট্রিংকেUserঅবজেক্টে রূপান্তর করা হয়েছে।
ii) Gson ব্যবহার করে JSON Parsing
Dependency যুক্ত করা:
Gradle এর build.gradle.kts ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যুক্ত করুন:
dependencies {
implementation("com.google.code.gson:gson:2.8.8")
}
JSON Parsing উদাহরণ:
import com.google.gson.Gson
data class User(val name: String, val age: Int)
fun main() {
val jsonString = """{"name":"Bob","age":25}"""
// JSON Parsing
val gson = Gson()
val user = gson.fromJson(jsonString, User::class.java)
println("Name: ${user.name}, Age: ${user.age}") // আউটপুট: Name: Bob, Age: 25
}
ব্যাখ্যা:
- এখানে
Gsonলাইব্রেরি ব্যবহার করে JSON স্ট্রিংকেUserঅবজেক্টে রূপান্তর করা হয়েছে।
২. XML Parsing
XML হলো একটি মার্কআপ ভাষা যা ডেটা বিন্যাসের জন্য ব্যবহৃত হয়। কটলিনে XML Parsing করার জন্য সাধারণত Simple XML বা Kotlinx.serialization লাইব্রেরি ব্যবহার করা হয়।
i) Simple XML ব্যবহার করে XML Parsing
Dependency যুক্ত করা:
Gradle এর build.gradle.kts ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যুক্ত করুন:
dependencies {
implementation("org.simpleframework:simple-xml:2.7.1")
}
Kotlin Data Class তৈরি করুন:
import org.simpleframework.xml.Element
import org.simpleframework.xml.Root
@Root(name = "user")
data class User(
@field:Element(name = "name")
var name: String = "",
@field:Element(name = "age")
var age: Int = 0
)
XML Parsing উদাহরণ:
import org.simpleframework.xml.Serializer
import org.simpleframework.xml.core.Persister
fun main() {
val xmlString = "<user><name>Alice</name><age>30</age></user>"
// XML Parsing
val serializer: Serializer = Persister()
val user = serializer.read(User::class.java, xmlString)
println("Name: ${user.name}, Age: ${user.age}") // আউটপুট: Name: Alice, Age: 30
}
ব্যাখ্যা:
@Rootএবং@Elementঅ্যানোটেশন ব্যবহার করে XML স্ট্রাকচার ডিফাইন করা হয়েছে।Persisterব্যবহার করে XML স্ট্রিংকেUserঅবজেক্টে রূপান্তর করা হয়েছে।
ii) Kotlinx.serialization ব্যবহার করে XML Parsing
Dependency যুক্ত করা:
Gradle এর build.gradle.kts ফাইলে নিম্নলিখিত ডিপেন্ডেন্সি যুক্ত করুন:
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-serialization-xml:0.2.0")
}
XML Parsing উদাহরণ:
import kotlinx.serialization.Serializable
import kotlinx.serialization.xml.Xml
@Serializable
data class User(val name: String, val age: Int)
fun main() {
val xmlString = "<user><name>Bob</name><age>25</age></user>"
// XML Parsing
val user = Xml.decodeFromString<User>(xmlString)
println("Name: ${user.name}, Age: ${user.age}") // আউটপুট: Name: Bob, Age: 25
}
ব্যাখ্যা:
@Serializableঅ্যানোটেশন ব্যবহার করে XML ডেটা মডেল তৈরি করা হয়েছে।Xml.decodeFromStringফাংশন ব্যবহার করে XML স্ট্রিংকেUserঅবজেক্টে রূপান্তর করা হয়েছে।
উপসংহার
কটলিনে JSON এবং XML Parsing করার জন্য বিভিন্ন লাইব্রেরি এবং পদ্ধতি রয়েছে। kotlinx.serialization এবং Gson JSON Parsing-এর জন্য এবং Simple XML বা kotlinx.serialization XML Parsing-এর জন্য ব্যবহার করা যায়। এই লাইব্রেরিগুলো ব্যবহার করে ডেটা বিন্যাসের কার্যকারিতা সহজে এবং কার্যকরভাবে পরিচালনা করা যায়।
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 ডেটা হ্যান্ডলিংকে আরও সহজ ও নিরাপদ করে তোলে।
Custom Serialization Logic তৈরি
কটলিনে Kotlin Serialization লাইব্রেরির মাধ্যমে আপনি কাস্টম Serialization Logic তৈরি করতে পারেন। এটি তখন দরকারি হয় যখন আপনার ডেটা ক্লাসের ফিল্ডগুলি JSON এ সঠিকভাবে ম্যাপ না হয় বা আপনার নির্দিষ্ট কোন ফরম্যাটের প্রয়োজন হয়। এই প্রক্রিয়াটি KSerializer ইন্টারফেস ব্যবহার করে করা হয়। নিচে কাস্টম Serialization Logic তৈরি করার প্রক্রিয়া এবং উদাহরণ দেওয়া হলো।
১. Custom Serializer তৈরি করা
কাস্টম Serialization Logic তৈরি করতে, প্রথমে একটি ক্লাস তৈরি করুন যা KSerializer<T> ইন্টারফেস ইমপ্লিমেন্ট করে।
i) Custom Serializer উদাহরণ
ধরি আমাদের একটি User ক্লাস আছে, যেখানে আমরা নাম এবং বয়সের সাথে সাথে ব্যবহারকারীর একটি "userID" রাখব। আমরা চান যে "userID" কে "id" হিসেবে JSON এ রূপান্তর করা হোক।
import kotlinx.serialization.KSerializer
import kotlinx.serialization.Serializer
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.Json
import kotlinx.serialization.Serializable
@Serializable
data class User(val userID: Int, val name: String, val age: Int)
@Serializer(forClass = User::class)
object UserSerializer : KSerializer<User> {
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("User") {
element("id", Int.serializer().descriptor)
element("name", String.serializer().descriptor)
element("age", Int.serializer().descriptor)
}
override fun serialize(encoder: Encoder, value: User) {
val compositeOutput = encoder.beginStructure(descriptor)
compositeOutput.encodeIntElement(descriptor, 0, value.userID) // "userID" as "id"
compositeOutput.encodeStringElement(descriptor, 1, value.name)
compositeOutput.encodeIntElement(descriptor, 2, value.age)
compositeOutput.endStructure(descriptor)
}
override fun deserialize(decoder: Decoder): User {
// Implementing deserialization logic
val dec: CompositeDecoder = decoder.beginStructure(descriptor)
var id = 0
var name = ""
var age = 0
loop@ while (true) {
when (val index = dec.decodeElementIndex(descriptor)) {
CompositeDecoder.DECODE_DONE -> break@loop
0 -> id = dec.decodeIntElement(descriptor, index) // "id"
1 -> name = dec.decodeStringElement(descriptor, index)
2 -> age = dec.decodeIntElement(descriptor, index)
else -> throw SerializationException("Unexpected index: $index")
}
}
dec.endStructure(descriptor)
return User(userID = id, name = name, age = age)
}
}
ব্যাখ্যা:
Userক্লাসটি তিনটি ফিল্ডের সাথে একটি ডেটা ক্লাস।UserSerializerএকটি কাস্টম Serializer যাKSerializerইন্টারফেস ইমপ্লিমেন্ট করে।serializeফাংশন JSON এUserঅবজেক্টকে রূপান্তরিত করে এবংdeserializeফাংশন JSON থেকেUserঅবজেক্ট তৈরি করে।
২. কাস্টম Serialization Logic ব্যবহার করা
কাস্টম Serializer ব্যবহার করার জন্য, JSON এ অবজেক্টকে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করার সময় আপনাকে এটি উল্লেখ করতে হবে।
i) Serialize এবং Deserialize উদাহরণ
fun main() {
val user = User(userID = 1, name = "Alice", age = 30)
// Serialize using custom serializer
val jsonString = Json { serializersModule = SerializersModule {
contextual(User::class, UserSerializer)
}}.encodeToString(UserSerializer, user)
println(jsonString) // আউটপুট: {"id":1,"name":"Alice","age":30}
// Deserialize using custom serializer
val deserializedUser = Json { serializersModule = SerializersModule {
contextual(User::class, UserSerializer)
}}.decodeFromString(UserSerializer, jsonString)
println(deserializedUser) // আউটপুট: User(userID=1, name=Alice, age=30)
}
ব্যাখ্যা:
- এখানে
Json.encodeToStringএবংJson.decodeFromStringব্যবহার করেUserঅবজেক্টকে কাস্টম Serializer ব্যবহার করে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করা হয়েছে।
উপসংহার
Kotlin Serialization লাইব্রেরি ব্যবহার করে কাস্টম Serialization Logic তৈরি করা একটি শক্তিশালী এবং নমনীয় প্রক্রিয়া। এটি আপনাকে ডেটা ফরম্যাটের উপর নিয়ন্ত্রণ দেয় এবং আপনার প্রয়োজন অনুযায়ী ডেটা ক্লাসের আচরণকে কাস্টমাইজ করতে সক্ষম করে।
Read more