मोबाइल डेवलपमेंट में डेटा सीरियलाइज़ेशन: सार, प्रारूप और यह कैसे काम करता है

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

सीरियलाइज़ेशन और डीसीरियलाइज़ेशन ऑब्जेक्ट को ट्रांसमिशन या स्टोरेज के लिए प्रारूप में बदलने की मौलिक प्रक्रियाएँ हैं। मोबाइल डेवलपमेंट में, ये तंत्र हर नेटवर्क अनुरोध, स्थिति सहेजने और अंतर-प्रक्रिया संचार में उपयोग होते हैं। MDN Web Docs, 2024 के अनुसार, JSON वेब और मोबाइल एप्लिकेशन में सबसे लोकप्रिय प्रारूप बना हुआ है, जो XML और Protocol Buffers से आगे है।

मुख्य बातें

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

सीरियलाइज़ेशन और डीसीरियलाइज़ेशन का सार

सीरियलाइज़ेशन एप्लिकेशन ऑब्जेक्ट को नेटवर्क ट्रांसमिशन या डिस्क स्टोरेज के लिए उपयुक्त प्रारूप में बदलने की प्रक्रिया है। डीसीरियलाइज़ेशन प्राप्त डेटा से ऑब्जेक्ट को पुनर्स्थापित करते हुए विपरीत रूपांतरण करता है। मोबाइल डेवलपमेंट में, सीरियलाइज़ेशन का उपयोग API अनुरोधों, स्क्रीन स्थिति सहेजने, कैशिंग और Intent या Bundle के माध्यम से डेटा स्थानांतरण में किया जाता है।

आवश्यकता कब उत्पन्न होती है

एप्लिकेशन घटकों के बीच या एप्लिकेशन और सर्वर के बीच किसी भी इंटरैक्शन के लिए सीरियलाइज़ेशन आवश्यक है। REST API JSON या XML में डेटा संचारित करते हैं, gRPC Protocol Buffers का उपयोग करता है, और Android पर अंतर-प्रक्रिया संचार Parcelable का उपयोग करता है। सीरियलाइज़ेशन के बिना, प्रक्रिया सीमा के पार जटिल ऑब्जेक्ट को पास करना या डेटाबेस में सहेजना असंभव है।

kotlin
// सीरियलाइज़ेशन का सामान्य सिद्धांत
data class User(
    val id: Int,
    val name: String,
    val email: String
)

// सीरियलाइज़ेशन: ऑब्जेक्ट -> JSON
fun serializeUser(user: User): String {
    return """{"id":${user.id},"name":"${user.name}","email":"${user.email}"}"""
}

// डीसीरियलाइज़ेशन: JSON -> ऑब्जेक्ट
fun deserializeUser(json: String): User? {
    // JSON को ऑब्जेक्ट में पार्स करना
    return Gson().fromJson(json, User::class.java)
}
प्रारूपआकारगतिपठनीयताटाइपिंग
JSONमध्यमउच्चउच्चगतिशील
XMLबड़ामध्यमउच्चXSD स्कीमा
Protocol Buffersछोटाबहुत उच्चनिम्नसख्त .proto
FlatBuffersछोटाअधिकतमनिम्नसख्त .fbs

JSON — मोबाइल डेवलपमेंट का मुख्य प्रारूप

JSON (JavaScript Object Notation) JavaScript ऑब्जेक्ट सिंटैक्स पर आधारित एक हल्का टेक्स्ट प्रारूप है। JSON स्ट्रिंग, संख्याएँ, बूलियन मान, सरणियाँ और नेस्टेड ऑब्जेक्ट का समर्थन करता है, जो मोबाइल एप्लिकेशन में अधिकांश डेटा स्थानांतरण परिदृश्यों को कवर करता है। प्रारूप प्लेटफ़ॉर्म-स्वतंत्र है: प्रत्येक पारिस्थितिकी तंत्र इसके विश्लेषण के लिए अंतर्निहित उपकरण प्रदान करता है।

विकल्पों पर JSON के लाभ

JSON अपनी सरलता और बहुमुखी प्रतिभा के कारण जीतता है। डेवलपर को बुनियादी उपयोग के लिए स्कीमा की आवश्यकता नहीं है — संरचना पार्सिंग के दौरान गतिशील रूप से निर्धारित होती है। प्रारूप की पठनीयता डीबगिंग और परीक्षण को सरल बनाती है: सर्वर प्रतिक्रिया किसी भी डेवलपर टूल में देखी जा सकती है। दोनों मोबाइल प्लेटफ़ॉर्म पर, JSON बिना किसी तृतीय-पक्ष लाइब्रेरी की आवश्यकता के मूल रूप से संसाधित होता है।

swift
// Codable — Swift में मूल JSON सीरियलाइज़ेशन
struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

let jsonString = """{"id":1,"name":"John","email":"john@test.com"}"""
let jsonData = Data(jsonString.utf8)
let decoder = JSONDecoder()
let user = try! decoder.decode(User.self, from: jsonData)

Google द्वारा Protocol Buffers

Protocol Buffers (protobuf) उच्च-प्रदर्शन प्रणालियों के लिए Google द्वारा विकसित एक बाइनरी सीरियलाइज़ेशन प्रारूप है। JSON के विपरीत, protobuf को .proto फ़ाइल में पूर्वनिर्धारित स्कीमा की आवश्यकता होती है, लेकिन यह काफी छोटा डेटा आकार और उच्च प्रसंस्करण गति प्रदान करता है। प्रारूप का उपयोग gRPC, Firebase Firestore और Google की आंतरिक सेवाओं में किया जाता है।

.proto फ़ाइल की संरचना

protobuf स्कीमा टाइप किए गए फ़ील्ड वाले संदेशों का वर्णन करती है, प्रत्येक का एक अद्वितीय नंबर होता है। protoc कंपाइलर लक्ष्य भाषा में क्लासेज़ उत्पन्न करता है जो स्वचालित रूप से सीरियलाइज़ेशन और डीसीरियलाइज़ेशन करते हैं। Protobuf बैकवर्ड संगतता खोए बिना फ़ील्ड जोड़ने और हटाने के नियमों के माध्यम से स्कीमा विकास का समर्थन करता है।

cpp
// user.proto में स्कीमा परिभाषा
syntax = "proto3";

message User {
  int32 id = 1;
  string name = 2;
  string email = 3;
  repeated string roles = 4;
}

// Kotlin में उत्पन्न कोड
val user = UserProto.User.newBuilder()
    .setId(1)
    .setName("John")
    .setEmail("john@test.com")
    .build()

val bytes: ByteArray = user.toByteArray()

XML और इसका अनुप्रयोग

XML (eXtensible Markup Language) कठोर संरचना, नाम स्थान समर्थन और XSD स्कीमा के माध्यम से सत्यापन वाला प्रारूप है। XML कॉम्पैक्टनेस और पार्सिंग गति में JSON से पीछे है, लेकिन Android डेवलपमेंट में लेआउट फ़ाइलों, AndroidManifest, संसाधनों और Gradle कॉन्फ़िगरेशन के लिए मांग में बना हुआ है। iOS पर, XML का उपयोग plist फ़ाइलों और कुछ विरासत सेवाओं में किया जाता है।

Android पर XML पार्सिंग

Android XML पार्सिंग के तीन तरीके प्रदान करता है: DOM (पूरे दस्तावेज़ को मेमोरी में लोड करना), SAX (ईवेंट-संचालित स्ट्रीमिंग पार्सिंग) और XmlPullParser (एक हाइब्रिड दृष्टिकोण)। XmlPullParser मोबाइल उपकरणों के लिए अनुशंसित विकल्प है, क्योंकि यह सीमित मेमोरी के साथ कुशलतापूर्वक काम करता है और दस्तावेज़ को पढ़ते समय संसाधित करने की अनुमति देता है।

kotlin
// Android पर XmlPullParser
fun parseUserXml(inputStream: InputStream): User? {
    val parser = Xml.newPullParser()
    parser.setInput(inputStream, Xml.Encoding.UTF_8.name)

    var id: Int? = null
    var name: String? = null
    var email: String? = null

    while (parser.next() != XmlPullParser.END_DOCUMENT) {
        if (parser.eventType == XmlPullParser.START_TAG
            && parser.name == "email") {
            email = parser.nextText()
        }
    }
    return User(id!!, name!!, email!!)
}

iOS और Android पर सीरियलाइज़ेशन

प्रत्येक प्लेटफ़ॉर्म अपने स्वयं के सीरियलाइज़ेशन उपकरण प्रदान करता है। iOS पर, प्राथमिक तंत्र JSONEncoder और JSONDecoder के साथ Codable प्रोटोकॉल है, जबकि Objective-C NSJSONSerialization का उपयोग करता है। Android Gson, Moshi और kotlinx.serialization लाइब्रेरी का उपयोग करता है। अंतर-प्रक्रिया डेटा स्थानांतरण के लिए, Android Parcelable का उपयोग करता है, जबकि iOS NSKeyedArchiver का उपयोग करता है। Kotlin प्रोजेक्ट तेजी से kotlinx.serialization चुन रहे हैं — JetBrains का एक समाधान जो मल्टीप्लेटफ़ॉर्म का समर्थन करता है और रिफ्लेक्शन पर निर्भर नहीं करता, Kotlin कंपाइलर प्लगइन के माध्यम से संकलन समय पर सीरियलाइज़र उत्पन्न करता है।

Android पर Parcelable बनाम Serializable

Android Intent और Bundle के लिए दो सीरियलाइज़ेशन तंत्र का समर्थन करता है। Serializable एक मानक Java तंत्र है जो रिफ्लेक्शन का उपयोग करता है, जिससे प्रदर्शन कम होता है। Parcelable एक Android-विशिष्ट प्रोटोकॉल है जिसके लिए writeToParcel और createFromParcel विधियों के मैन्युअल कार्यान्वयन की आवश्यकता होती है, लेकिन प्रत्यक्ष बाइट हेरफेर के कारण दस गुना तेज़ काम करता है।

kotlin
// Android पर Parcelable
@Parcelize
data class UserParcel(
    val id: Int,
    val name: String,
    val email: String
) : Parcelable

// Intent के माध्यम से स्थानांतरण
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("user", userParcel)
startActivity(intent)

iOS पर, नियंत्रकों के बीच डेटा स्थानांतरण के लिए Data में प्रारंभिक सीरियलाइज़ेशन के साथ Codable का उपयोग किया जाता है, जबकि अंतर-प्रक्रिया संचार के लिए NSKeyedArchiver का उपयोग किया जाता है, जो ऑब्जेक्ट को बाइनरी Property List प्रारूप में परिवर्तित करता है। आधुनिक SwiftUI प्रोजेक्ट एप्लिकेशन मॉड्यूल के बीच स्थानांतरण के लिए JSONEncoder के माध्यम से डेटा एन्कोड करना पसंद करते हैं।

सीरियलाइज़ेशन में सुरक्षा

अविश्वसनीय डेटा का गलत डीसीरियलाइज़ेशन कमजोरियों का कारण बन सकता है। सीरियलाइज़ेशन हमले Java में ओवरराइड readObject विधियों या तृतीय-पक्ष लाइब्रेरी के असुरक्षित डीसीरियलाइज़र का शोषण करते हैं। Android पर, अविश्वसनीय स्रोतों से डेटा के लिए Serializable से बचना चाहिए, इसके बजाय Parcelable या डीसीरियलाइज़ेशन के बाद सभी फ़ील्ड का मैन्युअल सत्यापन उपयोग करना चाहिए। iOS पर, JSONDecoder डिफ़ॉल्ट रूप से प्रकारों के प्रति सख्त है, लेकिन JSONSerialization के साथ काम करते समय, डेवलपर्स को सशर्त कास्टिंग के माध्यम से प्रकारों की जाँच करनी चाहिए।

प्रोजेक्ट के लिए प्रारूप चुनना

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

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

सरल शब्दों में सीरियलाइज़ेशन क्या है?

सीरियलाइज़ेशन एप्लिकेशन ऑब्जेक्ट को ऐसे प्रारूप में पैकेज करना है जिसे नेटवर्क पर भेजा जा सके या फ़ाइल में सहेजा जा सके। कल्पना करें कि आप किसी वस्तु की फ़ोटो लेते हैं — फ़ोटो सीरियलाइज़ेशन है, और फ़ोटो से वस्तु को पुनर्स्थापित करना डीसीरियलाइज़ेशन है।

JSON, Protocol Buffers से कैसे अलग है?

JSON एक टेक्स्ट प्रारूप है जो मानव-पठनीय है और इसके लिए स्कीमा की आवश्यकता नहीं है। Protocol Buffers एक बाइनरी प्रारूप है जिसमें अनिवार्य स्कीमा (.proto), काफी छोटा आकार और उच्च गति है। Protobuf उच्च-लोड सिस्टम के लिए चुना जाता है, JSON सार्वभौमिक संगतता के लिए।

JSON के बजाय XML का उपयोग कब किया जाता है?

XML कॉन्फ़िगरेशन फ़ाइलों (AndroidManifest, लेआउट संसाधन), जटिल नेस्टिंग वाले दस्तावेज़ों और XSD के माध्यम से सख्त सत्यापन वाली प्रणालियों के लिए मानक बना हुआ है। XML SOAP प्रोटोकॉल और विरासत प्रणालियों में भी उपयोग किया जाता है जिन्हें नाम स्थान समर्थन की आवश्यकता होती है।

Swift में Codable क्या है?

Codable एक Swift प्रोटोकॉल है जो स्वचालित सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के लिए Encodable और Decodable को जोड़ता है। कंपाइलर संरचना या वर्ग के सभी गुणों के लिए encode(to:) और init(from:) विधियों का कार्यान्वयन उत्पन्न करता है।

क्या तेज़ है: Parcelable या Serializable?

Parcelable Serializable की तुलना में काफी तेज़ काम करता है क्योंकि यह रिफ्लेक्शन का उपयोग नहीं करता और सीधे बाइट स्ट्रीम में फ़ील्ड लिखता है। आधुनिक उपकरणों पर, अंतर Parcelable के पक्ष में 10 गुना तक हो सकता है।

सारांश

  • सीरियलाइज़ेशन — ट्रांसमिशन के लिए ऑब्जेक्ट को प्रारूप में बदलना, डीसीरियलाइज़ेशन — विपरीत पुनर्निर्माण
  • JSON — REST API और मोबाइल एप्लिकेशन में उपयोग किया जाने वाला सार्वभौमिक टेक्स्ट प्रारूप
  • Protocol Buffers — निश्चित स्कीमा के साथ उच्च-प्रदर्शन परिदृश्यों के लिए Google का बाइनरी प्रारूप
  • XML — XSD सत्यापन वाला प्रारूप, कॉन्फ़िगरेशन और विरासत प्रणालियों में उपयोग किया जाता है
  • Parcelable (Android) और Codable (iOS) — घटकों के बीच डेटा स्थानांतरण के लिए प्लेटफ़ॉर्म-विशिष्ट सीरियलाइज़ेशन तंत्र
  • सीरियलाइज़ेशन सुरक्षा महत्वपूर्ण है: अविश्वसनीय डेटा डीसीरियलाइज़ेशन कमजोरियों का कारण बन सकता है

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

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

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

यह भी पढ़ें