परिचय: Kotlin में JSON - दर्द और खुशी दोनों क्यों?
\nअगर आपने कभी Android या Kotlin पर बैकएंड डेवलपमेंट किया है, तो आपने JSON का सामना ज़रूर किया होगा। यह आधुनिक डेवलपर के लिए हवा की तरह है: API, कॉन्फ़िग, डेटाबेस - सब कुछ इसी भाषा में बात करता है। लेकिन एक विरोधाभास है: Stack Overflow पर सवाल "How to parse JSON in Kotlin?" हर महीने हज़ारों बार देखा जाता है। क्यों? क्योंकि Kotlin में Java के विपरीत null safety है, और पुरानी लाइब्रेरी जैसे Gson अजीब व्यवहार करने लगती हैं।
\nइस ट्यूटोरियल में हम Kotlin में JSON पार्सिंग को सरल से जटिल तक समझेंगे। आप Kotlinx Serialization, Moshi और क्लासिक Gson के साथ काम करना सीखेंगे। हम असली कोड लिखेंगे जिसे आप सीधे अपने प्रोजेक्ट में कॉपी कर सकते हैं। चलिए शुरू करते हैं!
\n\n\n\n
JSON क्या है और Kotlin इसके साथ तुरंत क्यों नहीं जुड़ता?
\nJSON (JavaScript Object Notation) डेटा एक्सचेंज का एक टेक्स्ट फॉर्मेट है। यह कुछ इस तरह दिखता है:
\n{\n "name": "Kotlin",\n "year": 2011,\n "features": ["null safety", "coroutines"]\n}\nलगता है क्या गलत हो सकता है? लेकिन Kotlin में सख्त टाइपिंग और null safety है। जब आप JSON पार्स करते हैं, तो आपको स्पष्ट रूप से बताना होता है कि कौन से फील्ड null हो सकते हैं और कौन से अनिवार्य हैं। अगर लाइब्रेरी इसका ध्यान नहीं रखती, तो आपको NullPointerException या अजीब बग मिल सकते हैं।
इसलिए Kotlin में JSON पार्सिंग के लिए सही लाइब्रेरी चुनना सिर्फ "स्वाद का मामला" नहीं, बल्कि प्रोजेक्ट की स्थिरता का सवाल है।
\n\nKotlin में JSON पार्सिंग के लिए टॉप-3 लाइब्रेरी
\nहम तीन मुख्य तरीकों पर गौर करेंगे। हर एक के अपने फायदे और नुकसान हैं।
\n- \n
- Kotlinx Serialization - JetBrains की आधिकारिक लाइब्रेरी। भाषा के साथ सबसे अच्छा एकीकरण। \n
- Moshi - Square की आधुनिक लाइब्रेरी। Java और Kotlin दोनों के साथ काम करती है। \n
- Gson - पुराना और भरोसेमंद मानक। अभी भी लोकप्रिय है, लेकिन Kotlin के साथ सावधानी चाहिए। \n
1. Kotlinx Serialization - प्रोफेशनल्स की पसंद
\nयह Kotlin के लिए नेटिव लाइब्रेरी है। यह कोड जनरेशन का उपयोग करती है और null safety को पूरी तरह सपोर्ट करती है। अगर आप Kotlin पर नया प्रोजेक्ट लिख रहे हैं, तो यह आपकी पसंद है।
\nइंस्टॉलेशन: build.gradle.kts में प्लगइन जोड़ें:
plugins {\n kotlin("plugin.serialization") version "1.9.0"\n}\n\ndependencies {\n implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0")\n}\nकोड उदाहरण:
\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n@Serializable\ndata class User(\n val name: String,\n val year: Int,\n val features: List<String>\n)\n\nfun main() {\n val jsonString = """\n {\n "name": "Kotlin",\n "year": 2011,\n "features": ["null safety", "coroutines"]\n }\n """.trimIndent()\n\n val user = Json.decodeFromString<User>(jsonString)\n println(user.name) // Kotlin\n println(user.features[0]) // null safety\n}\nध्यान दें: Kotlinx Serialization अपने आप टाइप पकड़ लेता है। अगर JSON में कोई फील्ड गायब है और data class में वह nullable नहीं है, तो आपको एक अपवाद मिलेगा। यह अच्छा है - आप कोई गलती नहीं चूकेंगे।
2. Moshi - लचीला और तेज़
\nMoshi Square की लाइब्रेरी है जो Kotlin को ध्यान में रखकर बनाई गई है। यह भी कोड जनरेशन और null safety को सपोर्ट करती है। Gson के विपरीत, Moshi डिफ़ॉल्ट रूप से रिफ्लेक्शन का उपयोग नहीं करती, जो इसे तेज़ बनाता है।
\nइंस्टॉलेशन:
\ndependencies {\n implementation("com.squareup.moshi:moshi-kotlin:1.15.0")\n ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.0")\n}\nकोड उदाहरण:
\nim