मोबाइल डेवलपमेंट में डेटा क्रमांकन — यह क्या है, प्रारूप और कार्य सिद्धांत

लेखक: IT Sectr प्रकाशित: 2026-03-08 पढ़ने का समय: 8 मिनट

क्रमांकन एक ऑब्जेक्ट या डेटा संरचना को एक अनुक्रमिक प्रारूप में बदलने की प्रक्रिया है जो नेटवर्क ट्रांसमिशन या फ़ाइल में संग्रहण के लिए उपयुक्त होता है। विपरीत प्रक्रिया, अक्रमांकन, डेटा को उसकी मूल अवस्था में पुनर्स्थापित करता है। MDN Web Docs के अनुसार, किसी भी अंतर-प्रक्रिया संचार के लिए क्रमांकन आवश्यक है। क्रमांकन REST API, कैशिंग और एप्लिकेशन घटकों के बीच डेटा आदान-प्रदान का आधार है।

मुख्य बातें

  • क्रमांकन — ट्रांसमिशन या संग्रहण के लिए ऑब्जेक्ट को डेटा धारा में बदलना
  • JSON — REST API और वेब संचार के लिए मुख्य पाठ प्रारूप
  • Protobuf — अधिकतम प्रदर्शन और संकीर्णता के साथ बाइनरी प्रारूप
  • XML — उद्यम और Android डेवलपमेंट के लिए सत्यापन के साथ सत्र प्रारूप
  • प्रारूप चयन प्रदर्शन और अनुकूलता आवश्यकताओं पर निर्भर करता है

क्रमांकन क्या है?

क्रमांकन RAM में स्थित किसी ऑब्जेक्ट को बाईट्स या अक्षरों की एक रैखिक श््रृंखला में बदलने की प्रक्रिया है जिसे नेटवर्क पर भेजा जा सकता है, फ़ाइल में सहेजा जा सकता है, या किसी अन्य प्रक्रिया को भेजा जा सकता है। क्रमांकन के बिना, नेटवर्क संचार, स्थिति परिरक्षण और अंतर-प्रक्रिया अंतर्क्रिया असंभव है।

क्रमांकन में दो विपरीत प्रक्रियाएँ शामिल हैं। अग्रगामी प्रक्रिया (क्रमांकन) डेटा को प्रसारण प्रारूप में पैक करती है। विपरीत प्रक्रिया (अक्रमांकन) डेटा को वापस ऑब्जेक्ट में पुनर्स्थापित करती है। अक्रमांकन सुरक्षा के लिए महत्वपूर्ण है: गलत इनपुट डेटा एप्लिकेशन में कमजोरियों का कारण बन सकता है।

मोबाइल एप्लिकेशन डेवलपमेंट में, क्रमांकन हर जगह उपयोग किया जाता है: सर्वर पर अनुरोध भेजना और प्रतिक्रियाओं का प्रसंस्करण, स्क्रीन घूमने पर एप्लिकेशन स्थिति सहेजना, डिस्क पर डेटा कैशिंग, और Intent (Android) या Segue (iOS) के माध्यम से स्क्रीनों के बीच डेटा स्थानांतरण।

क्रमांकन के मुख्य कार्य

  • नेटवर्क संचार — क्लायंट और सर्वर के बीच डेटा स्थानांतरण
  • स्थिति परिरक्षण — एप्लिकेशन डेटा को सहेजना और पुनर्स्थापित करना
  • कैशिंग — ऑफलाइन पहुंच के लिए अनुरोध परिणाम सहेजना
  • क्रॉस-प्लेटफ़ॉर्म — विभिन्न भाषाओं में सिस्टमों के बीच डेटा आदान-प्रदान
  • लॉगिंग — लॉग में लिखने के लिए ऑब्जेक्ट क्रमांकन

मुख्य क्रमांकन प्रारूप

क्रमांकन प्रारूप पाठ और बाइनरी में विभाजित होते हैं। पाठ प्रारूप (JSON, XML) मानव-पठनीय होते हैं और देखने के लिए किसी उपकरण की आवश्यकता नहीं होती। बाइनरी प्रारूप (Protobuf, FlatBuffers, MessagePack) अधिक संकीर्ण और तीव्र होते हैं लेकिन अक्रमांकन के बिना पढ़े नहीं जा सकते। प्रारूप चयन प्रदर्शन और डीबगिंग सुविधा के बीच एक समझौता है।

JSON, XML और Protobuf के अलावा, विशेषिक्रत प्रारूप भी हैं: Google का FlatBuffers गेम्स और AR के लिए, MessagePack — JSON का एक संकीर्ण बाइनरी विकल्प, Apache का Avro Kafka में बिग डेटा के लिए, YAML — टिप्पणी समर्थन के साथ एक कॉन्फ़िगरेशन प्रारूप।

प्रारूप प्रकार स्कीमा आकार गति
JSON पाठ वैकल्पिक मध्यम मध्यम
XML पाठ XSD बड़ा कम
Protobuf बाइनरी अनिवार्य छोटा उच्च
FlatBuffers बाइनरी अनिवार्य छोटा अधिकतम
MessagePack बाइनरी नहीं छोटा उच्च
Avro बाइनरी JSON Schema छोटा उच्च

मोबाइल डेवलपमेंट में क्रमांकन

मोबाइल प्लेटफ़ॉर्मों पर क्रमांकन की अपनी विशिष्टताएँ हैं: सीमित ट्रैफ़िक, कमजोर प्रोसेसर, और स्क्रीन घूमने पर स्थिति संरक्षण की आवश्यकता। Android पर Gson, Moshi, Kotlinx Serialization का उपयोग किया जाता है। iOS पर — Codable, JSONSerialization, PropertyListEncoder। सही लाइब्रेरी का चयन एप्लिकेशन प्रदर्शन को महत्वपूर्ण रूप से प्रभावित करता है।

Kotlinx Serialization, Kotlin Multiplatform Mobile के लिए JetBrains की एक आधुनिक लाइब्रेरी है। यह JSON, Protobuf, CBOR और कस्टम प्रारूपों का समर्थन करती है। कोड जनरेशन Kotlin Serialization प्लगिन के माध्यम से संकलन समय पर होता है, जो रिफलेक्शन का उपयोग किए बिना उच्च प्रदर्शन सुनिश्चित करता है।

Kotlinx Serialization (Kotlin Multiplatform)

Kotlinx Serialization लाइब्रेरी क्लासों के लिए @Serializable एनोटेशन और सीरियलाइज़र उत्पन्न करने के लिए कंपाइलर प्लगिन का उपयोग करती है। यह उच्च प्रदर्शन और टाइप सुरक्षा सुनिश्चित करता है। डिफ़ॉल्ट प्रारूप JSON है, लेकिन अन्य प्रारूप अतिरिक्त मॉड्यूलों के माध्यम से समर्थित हैं।

kotlin
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.encodeToString
import kotlinx.serialization.decodeFromString

@Serializable
data class Project(
    val id: Int,
    val name: String,
    val platforms: List<String>,
    val active: Boolean
)

val json = Json {
    prettyPrint = true
    ignoreUnknownKeys = true
    encodeDefaults = true
}

fun main() {
    val project = Project(1, "MobileApp",
        listOf("Android", "iOS"), true)

    // सीरियलाइज़ेशन
    val jsonString = json.encodeToString(project)

    // डीसीरियलाइज़ेशन
    val restored = json.decodeFromString<Project>(jsonString)
}

iOS पर Codable (Swift)

Codable प्रोटोकॉल Swift का बिल्ट-इन सीरियलाइज़ेशन तंत्र है। यह Encodable (क्रमांकन) और Decodable (अक्रमांकन) प्रोटोकॉल को जोड़ता है। JSONEncoder और JSONDecoder स्वचालित रूप से नेस्टेड संरचनाओं, एरे, ऐच्छिक मानों और CodingKeys के माध्यम से कस्टम कीज़ को हैंडल करते हैं।

swift
import Foundation

struct AppConfig: Codable {
    let appName: String
    let version: String
    let features: [String]
    let isProduction: Bool
}

let config = AppConfig(
    appName: "MyApp",
    version: "2.1.0",
    features: ["push", "analytics", "offline"],
    isProduction: true
)

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]

guard let data = try? encoder.encode(config) else { return }
let jsonString = String(data: data, encoding: .utf8)

प्रदर्शन और प्रारूप तुलना

क्रमांकन प्रारूपों के प्रदर्शन का मूल्यांकन तीन मैत्रिक्स से किया जाता है: संदेश आकार, क्रमांकन गति और अक्रमांकन गति। मोबाइल एप्लिकेशनों के लिए, तीनों महत्वपूर्ण हैं: आकार ट्रैफ़िक और लोड समय को प्रभावित करता है, गति इंटरफ़ेस प्रतिक्रियाशीलता और एप्लिकेशन स्टार्टअप समय को प्रभावित करती है।

Protobuf और FlatBuffers बाइनरी प्रतिनिधित्व के कारण सबसे अच्छे परिणाम दिखाते हैं। FlatBuffers अलग दिखता है क्योंकि इसे एक अलग अक्रमांकन चरण की आवश्यकता नहीं होती — डेटा सीधे बाइनरी बफ़र से पढ़ा जाता है, जो इसे न्यूनतम विलंब आवश्यकताओं वाले गेम्स और AR एप्लिकेशनों के लिए आदर्श बनाता है। JSON, खराब प्रदर्शन के बावजूद, अपनी सरलता और सार्वभौमिकता के कारण REST API के लिए सबसे लोकप्रिय प्रारूप बना हुआ है।

परिदृश्य अनुशंसित प्रारूप कारण
REST API JSON सार्वभौमिकता, पठनीयता, समर्थन
माइक्रोसर्विसेस Protobuf संकीर्णता, गति, gRPC
गेम्स / AR FlatBuffers Zero-copy, न्यूनतम विलंब
बिग डेटा Avro Kafka और Hadoop के साथ अनुकूलता
कॉन्फ़िगरेशन YAML टिप्पणी, पठनीयता
Android लेआउट XML प्लेटफ़ॉर्म मानक

तुलनात्मक परीक्षण

1000 यूज़र ऑब्जेक्टों के डेटासेट पर व्यावहारिक परीक्षण दिखाते हैं: Protobuf 12 KB के संदेश बनाता है (JSON — 85 KB, XML — 120 KB)। क्रमांकन समय: Protobuf — 2 मिलीसेकंड, JSON — 8 मिलीसेकंड, XML — 25 मिलीसेकंड। ये आंकड़े बाइनरी प्रारूपों को उच्च-लोड सिस्टम और सीमित ट्रैफ़िक वाले मोबाइल एप्लिकेशनों के लिए पसंदीदा बनाते हैं।

डेटा क्रमांकन उदाहरण

उदाहरण एक ही ऑब्जेक्ट को विभिन्न प्रारूपों में क्रमांकन दिखाते हैं। यह आकार और पठनीयता की तुलना करने में मदद करता है। एक ही User ऑब्जेक्ट को JSON, XML और Protobuf में क्रमांकित किया जाएगा — स्पष्ट रूप से देखा जा सकता है कि JSON, XML से अधिक संकीर्ण है, और Protobuf सबसे अधिक संकीर्ण है और अपढ़नीय भी है।

एक आब्जेक्ट तीन प्रारूपों में

JSON — न्यूनतम सिनटैक्स, क्वोटेशन में कीज़, विभिन्न प्रकार के मान। 80 अक्षरों में। पठनीयता उच्च है, दृश्य संरचना स्पष्ट है। उन API के लिए उपयुक्त जहाँ डेवलपमेंट और डीबगिंग गति महत्वपूर्ण है।

XML — प्रत्येक एलिमेंट खुलने और बंद करने वाले टैग्स में लपेटा होता है। 150 अक्षरों में। पठनीयता मध्यम, संरचना सत्र है। दस्तावेज़ वर्कफ़्लो और XSD सत्यापन की आवश्यकता वाले सिस्टम के लिए उपयुक्त।

Protobuf — बाइनरी, इस डेटा के लिए 32 बाईट्स। अपढ़नीय — देखने के लिए अक्रमांकन की आवश्यकता है। न्यूनतम आकार इसे उच्च-लोड सिस्टम और मोबाइल एप्लिकेशनों के लिए आदर्श बनाता है।

json
{
  "id": 42,
  "name": "IT Sectr",
  "email": "team@itsectr.com",
  "role": "admin",
  "active": true
}
xml
<user>
    <id>42</id>
    <name>IT Sectr</name>
    <email>team@itsectr.com</email>
    <role>admin</role>
    <active>true</active>
</user>

क्रमांकन के सबसे अच्छे तरीके

सबसे अच्छे तरीके सामान्य गलतियों से बचने और परियोजना के लिए सही क्रमांकन रणनीति चुनने में मदद करते हैं। इन अनुशंसाओं का पालन करने से प्रदर्शन, सुरक्षा और कोड रखरखाव में सुधार होता है।

मोबाइल डेवलपमेंट के लिए अनुशंसाएँ

  1. परिदृश्य के अनुसार प्रारूप चुनें — REST API के लिए JSON, gRPC और माइक्रोसर्विसेस के लिए Protobuf
  2. Java Serializable से बचें — धीमी और असुरक्षित तंत्र, Kotlinx Serialization या Moshi का उपयोग करें
  3. अज्ञात कीज़ को अनिगन्य करें — मॉडल में अनुपस्थित फ़ील्ड को छोड़ने के लिए पार्सर कॉन्फ़िगर करें
  4. अक्रमांकित डेटा कैश करें — एक ही डेटा को बार-बार पार्स करने से बचें
  5. इनपुट डेटा मान्य करें — अक्रमांकन के दौरान सीमाओं और प्रकारों की जांच करें

सुरक्षा और क्रमांकन

क्रमांकन सुरक्षा एक महत्वपूर्ण पहलू है, विशेष रूप से अविश्वसनीय स्रोतों से डेटा का अक्रमांकन करते समय। अक्रमांकन हमले रिमोट कोड एक्सीक्यूशन (RCE) का कारण बन सकते हैं, जो वेब और मोबाइल एप्लिकेशनों में सबसे खतरनाक कमजोरियों में से एक है। सबसे प्रसिद्ध मामले Java Serializable और Python pickle से संबंधित हैं।

Protobuf और JSON में ऐसे हमलों के खिलाफ बिल्ट-इन सुरक्षा है, क्योंकि वे केवल डेटा के साथ काम करते हैं, मनमानी ऑब्जेक्टों के साथ नहीं। इसके विपरीत, Java Serializable, classpath में उपलब्ध किसी भी क्लास को पुनर्स्थापित कर सकता है, जो इसे बाहरी स्रोतों से डेटा प्राप्त करने के लिए खतरनाक बनाता है। Android पर, मानक Java Serialization के बजाय Kotlinx Serialization या Moshi का उपयोग करने की अनुशंसा है।

अतिरिक्त सुरक्षा उपाय: इनपुट डेटा आकार पर एक सीमा निर्धारित करें, अक्रमांकन से पहले स्कीमा मान्य करें, HTTP हेडर से Content-Type पर भरोसा न करें, अनुमत क्लासों के लिए अलॉलिस्ट का उपयोग करें। नियमित रूप से सीरियलाइज़ेशन लाइब्रेरियों को अपडेट करें, क्योंकि उनमें कमजोरियाँ समय-समय पर खोजी जाती हैं और ठीक की जाती हैं।

अक्सर पूछे जाने वाले प्रश्न

क्रमांकन और मार्शलिंग में क्या अंतर है?

क्रमांकन एक ऑब्जेक्ट को बाईट अनुक्रम में बदलता है, जबकि मार्शलिंग प्रकारों और संरचना को संरक्षित रखते हुए विभिन्न पते स्थानों के बीच डेटा स्थानांतरित करता है। मार्शलिंग में क्रमांकन प्रक्रिया के रूप में शामिल होता है, लेकिन इसमें संदर्भ एन्कोडिंग और मेमरी प्रबंधन भी शामिल हो सकता है।

कौन सा क्रमांकन प्रारूप सबसे तीव्र है?

Google का FlatBuffers zero-copy अक्रमांकन के कारण अधिकतम गति प्रदान करता है — डेटा बिना रूपांतरण के सीधे बाइनरी बफ़र से पढ़ा जाता है। Protobuf दूसरे स्थान पर है, JSON तीसरे पर। XML सभी सामान्य प्रारूपों में सबसे धीमा है।

Android के लिए क्या चुनें: Gson, Moshi या Kotlinx Serialization?

Kotlinx Serialization Kotlin पर नए प्रोजेक्टों के लिए सबसे अच्छा विकल्प है: कंपाइलर जनरेशन, Kotlin Multiplatform समर्थन, null safety। Moshi Java परियोजनाओं के लिए एक अच्छा विकल्प है, Gson से अधिक प्रदर्शनशील। Gson शुरू करने के लिए सबसे सरल लाइब्रेरी है लेकिन धीमी है और रिफलेक्शन का उपयोग करती है।

चाक्रिय संदर्भों वाले ऑब्जेक्ट को कैसे क्रमांकित करें?

चाक्रिय संदर्भ क्रमांकन के दौरान अनंत पुनरावृत्ति का कारण बनते हैं। समाधान: प्रत्यक्ष ऑब्जेक्ट संदर्भों के बजाय ID संदर्भों का उपयोग करें, विशेष क्रमांकन अडाप्टर लागू करें (जैसे Jackson में @JsonIgnore), या चक्रों को खत्म करने के लिए डेटा मॉडल को पुनर्डिज़ाइन करें।

क्या क्रमांकन एप्लिकेशन सुरक्षा को प्रभावित करता है?

हाँ, विशेष रूप से अविश्वसनीय डेटा का अक्रमांकन। अक्रमांकन कमजोरियाँ रिमोट कोड एक्सीक्यूशन का कारण बन सकती हैं। अनुशंसा: अविश्वसनीय स्रोतों से डेटा का अक्रमांकन न करें, अक्रमांकन के दौरान क्लासेस की अलॉलिस्ट का उपयोग करें, और प्रसंस्करण से पहले डेटा स्कीमा को मान्य करें।

सारांश

  • क्रमांकन ऑब्जेक्ट को प्रसारण और भंडारण के लिए डेटा धारा में बदलता है, अक्रमांकन उन्हें पुनर्स्थापित करता है
  • JSON REST API का मानक है, XML दस्तावेज़ वर्कफ़्लो के लिए, Protobuf माइक्रोसर्विसेस और उच्च-लोड के लिए
  • बाइनरी प्रारूप (Protobuf, FlatBuffers) पाठ प्रारूपों से 3–10 गुना अधिक संकीर्ण और तीव्र हैं
  • Android पर Kotlinx Serialization की अनुशंसा है, iOS पर — बिल्ट-इन Codable
  • अक्रमांकित डेटा कैशिंग CPU लोड कम करती है और एप्लिकेशन को तेज़ करती है
  • अक्रमांकन सुरक्षा महत्वपूर्ण है — इनपुट डेटा मान्य करें और अलॉलिस्ट का उपयोग करें
  • प्रारूप चयन पठनीयता, प्रदर्शन और अनुकूलता के बीच एक समझौता है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें