कोटलिन में JSON के साथ काम करने का परिचय
JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) सर्वर और क्लाइंट के बीच डेटा आदान-प्रदान के लिए सबसे लोकप्रिय फॉर्मेट में से एक है। आधुनिक कोटलिन डेवलपमेंट में, चाहे वह एंड्रॉइड एप्लिकेशन हो या सर्वर-साइड प्रोजेक्ट, JSON के साथ कुशलतापूर्वक काम करने की क्षमता एक आवश्यक कौशल है। इस लेख में, हम विस्तार से जानेंगे कि कोटलिन में सबसे लोकप्रिय लाइब्रेरीज़: kotlinx.serialization और Gson का उपयोग करके JSON पार्सिंग और सीरियलाइज़ेशन कैसे किया जाता है।
चाहे आप REST API बना रहे हों, बाहरी सेवाओं से प्रतिक्रियाएँ प्रोसेस कर रहे हों, या स्थानीय सेटिंग्स सेव कर रहे हों, JSON के साथ काम करने के सिद्धांतों को समझना आपको स्वच्छ और अधिक कुशल कोड लिखने में मदद करेगा।
कोटलिन में JSON पार्सिंग की मूल बातें
सीरियलाइज़ेशन और डीसीरियलाइज़ेशन क्या हैं?
कोड पर जाने से पहले, दो मुख्य अवधारणाओं को समझना महत्वपूर्ण है:
- सीरियलाइज़ेशन — कोटलिन ऑब्जेक्ट (डेटा क्लास, लिस्ट, आदि) को JSON स्ट्रिंग में बदलना।
- डीसीरियलाइज़ेशन (पार्सिंग) — विपरीत प्रक्रिया: JSON स्ट्रिंग से कोटलिन ऑब्जेक्ट बनाना।
कोटलिन में बिल्ट-इन JSON सपोर्ट नहीं है, इसलिए हम थर्ड-पार्टी लाइब्रेरीज़ का उपयोग करते हैं। आइए दो सबसे लोकप्रिय लाइब्रेरीज़ को देखें।
kotlinx.serialization लाइब्रेरी
kotlinx.serialization JetBrains की एक आधिकारिक लाइब्रेरी है जो कोटलिन भाषा के साथ पूरी तरह से एकीकृत होती है। यह कंपाइल टाइम पर काम करती है, उच्च प्रदर्शन और टाइप सुरक्षा सुनिश्चित करती है।
लाइब्रेरी जोड़ना
पहले, build.gradle.kts में प्लगइन जोड़ें:
plugins { kotlin("plugin.serialization") version "1.9.22"}
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")}डेटा मॉडल को परिभाषित करना
एक उपयोगकर्ता को प्रस्तुत करने के लिए एक क्लास बनाते हैं:
import kotlinx.serialization.Serializable
@Serializabledata class User( val name: String, val age: Int, val email: String? = null, // nullable फ़ील्ड val roles: List<String> = emptyList())@Serializable एनोटेशन कंपाइलर को बताता है कि इस क्लास को सीरियलाइज़ किया जा सकता है।
सीरियलाइज़ेशन (ऑब्जेक्ट → JSON)
import kotlinx.serialization.encodeToStringimport kotlinx.serialization.json.Json
fun main() { val user = User( name = "Anna", age = 28, email = "anna@example.com", roles = listOf("admin", "user") )
val jsonString = Json.encodeToString(user) println(jsonString) // {"name":"Anna","age":28,"email":"anna@example.com","roles":["admin","user"]}}डीसीरियलाइज़ेशन (JSON → ऑब्जेक्ट)
import kotlinx.serialization.decodeFromString
fun main() { val json = """{"name":"Ivan","age":35,"roles":["user"]}""" val user = Json.decodeFromString<User>(json) println(user.name) // Ivan println(user.email) // null (JSON में निर्दिष्ट नहीं)}JSON सेटिंग्स कॉन्फ़िगर करना
आप पार्सर के व्यवहार को अनुकूलित कर सकते हैं:
val json = Json { prettyPrint = true // सुंदर फॉर्मेटिंग ignoreUnknownKeys = true // JSON में अतिरिक्त फ़ील्ड को अनदेखा करें isLenient = true // लचीला पार्सिंग की अनुमति दें (जैसे, कोट्स)}
val user = json.decodeFromString<User>(jsonString)Gson लाइब्रेरी
Google का Gson एक और लोकप्रिय लाइब्रेरी है, जो विशेष रूप से एंड्रॉइड डेवलपमेंट में आम है।
Gson जोड़ना
dependencies { implementation("com.google.code.gson:gson:2.10.1")}उपयोग का उदाहरण
import com.google.gson.Gson
data class Product( val id: Int, val title: String, val price: Double)
fun main() { val gson = Gson() val product = Product(1, "Laptop", 999.99) // सीरियलाइज़ेशन val json = gson.toJson(product) println(json) // {"id":1,"title":"Laptop","price":999.99} // डीसीरियलाइज़ेशन val jsonString = """{"id":2,"title":"Mouse","price":25.50}""" val parsedProduct = gson.fromJson(jsonString, Product::class.java) println(parsedProduct.title) // Mouse}