Kotlin में JSON के साथ कार्य: डेटा का पार्सिंग और सीरियलाइज़ेशन

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin में JSON के साथ कार्य: पार्सिंग और सीरियलाइज़ेशन की पूरी गाइड



JSON (JavaScript Object Notation) आधुनिक वेब डेवलपमेंट में डेटा आदान-प्रदान के सबसे लोकप्रिय प्रारूपों में से एक बना हुआ है। Kotlin के साथ काम करते समय, चाहे वह Ktor पर सर्वर-साइड हो या Android के लिए मोबाइल एप्लिकेशन, JSON को कुशलतापूर्वक पार्स और सीरियलाइज़ करने की क्षमता एक अनिवार्य कौशल है। इस लेख में, हम Kotlin में JSON के साथ काम करने के तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: Gson, Moshi लाइब्रेरीज़ और JetBrains के आधिकारिक समाधान - kotlinx.serialization का उपयोग।



Kotlin को JSON के लिए विशेष दृष्टिकोण की आवश्यकता क्यों है?



Kotlin एक स्थिर रूप से टाइप की गई भाषा है जिसमें null-सुरक्षा, data-क्लास और डिफ़ॉल्ट गुण जैसी विशेषताएं हैं। JSON के साथ काम करने वाली लाइब्रेरीज़ को इन विशेषताओं को ध्यान में रखना चाहिए ताकि कोड न केवल काम करे बल्कि मुहावरेदार भी हो। गलत कॉन्फ़िगरेशन से NullPointerException या डिसीरियलाइज़ेशन के दौरान अप्रत्याशित व्यवहार हो सकता है।



1. JSON के साथ काम करने के लिए Gson का उपयोग



Google का Gson सबसे पुरानी और सबसे व्यापक लाइब्रेरीज़ में से एक है। इसका उपयोग करना सरल है, लेकिन Kotlin के साथ काम करते समय इसकी कुछ विशेषताएं हैं।



डिपेंडेंसी जोड़ना

// build.gradle.ktsimplementation("com.google.code.gson:gson:2.10.1")


ऑब्जेक्ट को JSON में सीरियलाइज़ करना

import com.google.gson.Gson

data class User( val id: Int, val name: String, val email: String? = null)

fun main() { val user = User(1, "इवान पेट्रोव", "ivan@example.com") val gson = Gson() val json = gson.toJson(user) println(json) // आउटपुट: {"id":1,"name":"इवान पेट्रोव","email":"ivan@example.com"}}


JSON को ऑब्जेक्ट में पार्स करना

fun parseUser(jsonString: String): User {    val gson = Gson()    return gson.fromJson(jsonString, User::class.java)}

fun main() { val json = """{"id":2,"name":"अन्ना स्मिर्नोवा","email":null}""" val user = parseUser(json) println(user.name) // अन्ना स्मिर्नोवा}


महत्वपूर्ण: Gson Java रिफ्लेक्शन का उपयोग करता है और Kotlin की null-सुरक्षा को ध्यान में नहीं रख सकता है। डिसीरियलाइज़ेशन के दौरान, non-null के रूप में घोषित फ़ील्ड को null मान मिल सकता है, जो रनटाइम पर त्रुटि का कारण बनेगा। @JvmOverloads और डिफ़ॉल्ट मानों वाले कंस्ट्रक्टर का उपयोग करने की अनुशंसा की जाती है।



2. Moshi — Square का आधुनिक विकल्प



Moshi को Kotlin की विशेषताओं को ध्यान में रखकर बनाया गया था और यह null-सुरक्षा और data-क्लास के साथ बेहतर एकीकरण प्रदान करता है।



डिपेंडेंसी जोड़ना

// build.gradle.ktsimplementation("com.squareup.moshi:moshi-kotlin:1.15.0")kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")


Moshi के साथ उदाहरण

import com.squareup.moshi.Moshiimport com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class Product( val id: Int, val title: String, val price: Double, val inStock: Boolean = false)

fun main() { val moshi = Moshi.Builder() .addLast(KotlinJsonAdapterFactory()) .build()

val adapter = moshi.adapter(Product::class.java)

// सीरियलाइज़ेशन val product = Product(101, "लैपटॉप", 89999.99, true) val json = adapter.toJson(product) println(json) // {"id":101,"title":"लैपटॉप","price":89999.99,"inStock":true}

// डिसीरियलाइज़ेशन val jsonString = """{"id":102,"title":"माउस","price":2500.00}""" val parsedProduct = adapter.fromJson(jsonString) println(parsedProduct?.title) // माउस println(parsedProduct?.inStock) // false (डिफ़ॉल्ट मान)}


Moshi स्वचालित रूप से data-क्लास में डिफ़ॉल्ट मानों को संभालता है और nullable-प्रकारों के साथ सही ढंग से काम करता है। बेहतर प्रदर्शन के लिए @JsonClass एनोटेशन के माध्यम से कोड जनरेशन का उपयोग करने की अनुशंसा की जाती है।



3. kotlinx.serialization — JetBrains का आधिकारिक समाधान

ब्लॉग

पुस्तक अनुशंसाएँ