Kotlin Serialization এবং Data Handling

কটলিন (Kotlin) - Mobile App Development

419

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-এর এই ফিচার ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের ডেটা পরিচালনা করতে পারেন অত্যন্ত কার্যকরীভাবে।

Content added By

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 ডেভেলপারদের জন্য ডেটার পরিচালনার প্রক্রিয়াকে সহজ এবং নিরাপদ করে তোলে।

Content added By

ডেটা স্টোরেজ এবং স্থানান্তরের জন্য 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
}

ব্যাখ্যা:

  • @Serializable annotation ব্যবহার করে ক্লাসটি 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-এর জন্য ব্যবহার করা যায়। এই লাইব্রেরিগুলো ব্যবহার করে ডেটা বিন্যাসের কার্যকারিতা সহজে এবং কার্যকরভাবে পরিচালনা করা যায়।

Content added By

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 ডেটা হ্যান্ডলিংকে আরও সহজ ও নিরাপদ করে তোলে।

Content added By

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 তৈরি করা একটি শক্তিশালী এবং নমনীয় প্রক্রিয়া। এটি আপনাকে ডেটা ফরম্যাটের উপর নিয়ন্ত্রণ দেয় এবং আপনার প্রয়োজন অনুযায়ী ডেটা ক্লাসের আচরণকে কাস্টমাইজ করতে সক্ষম করে।

Content added By
Promotion

Are you sure to start over?

Loading...