इस लेख में
JSON से Kotlin डेटा क्लासेस क्यों
Kotlin डेटा क्लासेस बिल्ट-इन equals, hashCode, copy और destructuring सपोर्ट के साथ JSON डेटा को मॉडल करने का एक संक्षिप्त तरीक़ा देती हैं। Android डेवलपर्स और बैकएंड Kotlin प्रोजेक्ट्स के लिए, हर API रिस्पॉन्स के लिए डेटा क्लासेस मैन्युअली लिखना समय लेने वाला और त्रुटि-प्रवण होता है। हमारा JSON to Kotlin कन्वर्टर सही null safety, सीरियलाइज़ेशन एनोटेशन और नामकरण परंपराओं के साथ idiomatic डेटा क्लासेस चंद सेकंड में जनरेट कर देता है।
Kotlin का null safety सिस्टम इसकी सबसे मज़बूत विशेषताओं में से एक है, लेकिन इसके लिए साफ़-साफ़ nullable टाइप डिक्लेरेशन ज़रूरी होते हैं। JSON को बदलते समय — जहाँ कोई भी फ़ील्ड संभावित रूप से null हो सकती है — कन्वर्टर समझदारी से डेटा का विश्लेषण करके तय करता है कि कौन-सी फ़ील्ड्स nullable होनी चाहिए (? से चिह्नित) और कौन-सी सुरक्षित रूप से non-null हो सकती हैं, जिससे शुरू से ही सुरक्षित कोड बनता है।
कन्वर्टर की विशेषताएँ
कन्वर्टर आपकी सीरियलाइज़ेशन लाइब्रेरी और प्रोजेक्ट ज़रूरतों के अनुरूप Kotlin डेटा क्लासेस बनाता है।
- Nullable टाइप्स — JSON सैंपल में null वैल्यू वाली फ़ील्ड्स nullable टाइप्स (String?) जनरेट करती हैं, जबकि मौजूद वैल्यू वाली फ़ील्ड्स non-null टाइप्स (String) जनरेट करती हैं, जो डेटा कॉन्ट्रैक्ट को सटीक रूप से दर्शाती हैं
- @SerializedName — जब JSON keys snake_case या दूसरे non-camelCase फ़ॉर्मैट इस्तेमाल करती हैं, तब कन्वर्टर Gson @SerializedName एनोटेशन जनरेट करता है और उन्हें idiomatic Kotlin प्रॉपर्टी नामों से मैप करता है
- डिफ़ॉल्ट वैल्यू — वैकल्पिक फ़ील्ड्स कंस्ट्रक्टर में डिफ़ॉल्ट वैल्यू (खाली strings, खाली lists, null) शामिल कर सकती हैं, जिससे डेटा क्लास आंशिक JSON रिस्पॉन्स के लिए लचीली बन जाती है
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
JSON को Kotlin में बदलें →Android-विशिष्ट पैटर्न
JSON से जनरेट की गई Kotlin डेटा क्लासेस Android डेवलपमेंट वर्कफ़्लो में ख़ासतौर पर उपयोगी होती हैं।
- Parcelize — जनरेट की गई डेटा क्लासेस को @Parcelize से एनोटेट किया जा सकता है और Parcelable इम्प्लीमेंट किया जा सकता है, ताकि Android activities और fragments के बीच बिना कोई parcel कोड लिखे डेटा पास किया जा सके
- Room इंटीग्रेशन — @Entity और @PrimaryKey एनोटेशन जोड़कर यह आउटपुट Room entity क्लासेस के रूप में काम कर सकता है, जिससे API रिस्पॉन्स सीधे लोकल डेटाबेस स्टोरेज से जुड़ जाते हैं
- Retrofit अनुकूलता — जनरेट की गई क्लासेस Retrofit और Gson/Moshi कन्वर्टर्स के साथ तुरंत काम करती हैं, जिससे आप API इंटरफ़ेस परिभाषित करके कुछ ही मिनटों में नेटवर्क कॉल करना शुरू कर सकते हैं
अक्सर पूछे जाने वाले सवाल
कन्वर्टर null safety को कैसे संभालता है?
कन्वर्टर JSON सैंपल में हर फ़ील्ड की जाँच करता है। null वैल्यू वाली फ़ील्ड्स nullable टाइप की जाती हैं (जैसे, String?)। असल वैल्यू वाली फ़ील्ड्स non-null टाइप की जाती हैं (जैसे, String)। सबसे सटीक null safety के लिए, ऐसा JSON सैंपल दें जो आपके डेटा की पूरी रेंज दर्शाए — जिसमें वे फ़ील्ड्स भी शामिल हों जो प्रोडक्शन में null हो सकती हैं।
डेटा क्लास प्रॉपर्टीज़ के लिए मुझे val इस्तेमाल करना चाहिए या var?
कन्वर्टर Kotlin की immutability की प्राथमिकता का पालन करते हुए डिफ़ॉल्ट रूप से val (read-only) प्रॉपर्टीज़ जनरेट करता है। val प्रॉपर्टीज़ वाली डेटा क्लासेस thread-safe होती हैं और उनके बारे में समझना आसान होता है। अगर आपको ऑटो-जनरेटेड ID वाली Room entities जैसे कुछ मामलों के लिए mutable प्रॉपर्टीज़ चाहिए, तो जनरेशन के बाद आप अलग-अलग प्रॉपर्टीज़ को var में बदल सकते हैं।
क्या मैं polymorphic JSON के लिए sealed क्लासेस जनरेट कर सकता हूँ?
कन्वर्टर JSON संरचना से सामान्य डेटा क्लासेस जनरेट करता है। Polymorphic JSON के लिए (जहाँ कोई फ़ील्ड ऑब्जेक्ट का टाइप तय करती है), जनरेशन के बाद आपको मैन्युअली एक sealed क्लास हायरार्की बनानी होगी। कन्वर्टर का इस्तेमाल हर वेरिएंट को अलग डेटा क्लास के रूप में जनरेट करने के लिए करें, फिर उन्हें एक discriminator फ़ील्ड वाली sealed क्लास में लपेट दें।