उदाहरण के साथ C# में क्रमांकन और क्रमांकन

⚡ स्मार्ट सारांश

C# में सीरियलाइज़ेशन किसी ऑब्जेक्ट को बाइट्स की स्ट्रीम में परिवर्तित करता है ताकि उसे फ़ाइल में सहेजा जा सके या विभिन्न एप्लिकेशनों के बीच भेजा जा सके; डीसीरियलाइज़ेशन ऑब्जेक्ट को पुनः निर्मित करता है। यहाँ आप उदाहरणों के साथ ऑब्जेक्ट को सीरियलाइज़ और डीसीरियलाइज़ करना सीखेंगे।

  • 🔄 यह क्या है: सीरियलाइज़ेशन एक C# ऑब्जेक्ट को फ़ाइल में लिखता है, और डीसीरियलाइज़ेशन उसे वापस पढ़ता है।
  • [क्रमबद्ध करने योग्य]: किसी क्लास को सीरियलाइज़ करने से पहले उसमें [Serializable] एट्रीब्यूट होना आवश्यक है।
  • 💾 बाइनरी प्रारूप: FileStream के साथ BinaryFormatter ऑब्जेक्ट को बाइनरी रूप में लिखता है।
  • 🧩 प्रारूप: पठनीय आउटपुट के लिए C# XML और JSON सीरियलाइज़ेशन का भी समर्थन करता है।
  • 🤖 एआई सहायता: GitHub Copilot जैसे AI टूल तुरंत सीरियलाइज़ेशन कोड जनरेट करते हैं।

C# में सीरियलाइज़ेशन और डीसीरियलाइज़ेशन

C# में क्रमांकन और क्रमांकन

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

सीरियलाइजेशन एक अवधारणा है जिसमें C# क्लास ऑब्जेक्ट को फ़ाइलों में लिखा या सीरियलाइज़ किया जाता है। मान लीजिए कि आपके पास ट्यूटोरियल नामक एक C# क्लास है। और क्लास में ID और ट्यूटोरियल नाम की 2 प्रॉपर्टी हैं।

सीरियलाइज़ेशन का उपयोग ट्यूटोरियल क्लास के डेटा गुणों को सीधे फ़ाइल में लिखने के लिए किया जा सकता है। डिसेरियलाइज़ेशन का उपयोग फ़ाइल से डेटा पढ़ने और ट्यूटोरियल ऑब्जेक्ट को फिर से बनाने के लिए किया जाता है।

C# में सीरियलाइज़ेशन के प्रकार

C# कई सीरियलाइज़ेशन फॉर्मेट को सपोर्ट करता है, और आप डेटा के उपयोग के स्थान के आधार पर उनमें से एक का चयन करते हैं। मुख्य प्रकार नीचे सूचीबद्ध हैं।

  • बाइनरी सीरियलाइज़ेशन यह किसी ऑब्जेक्ट को कॉम्पैक्ट बाइनरी स्ट्रीम में परिवर्तित करता है। यह तेज़ है लेकिन मानव-पठनीय नहीं है और .NET से जुड़ा हुआ है।
  • XML सीरियलाइज़ेशन यह XmlSerializer क्लास का उपयोग करके किसी ऑब्जेक्ट के सार्वजनिक गुणों को पठनीय XML फ़ाइल में लिखता है।
  • JSON सीरियलाइज़ेशन यह वेब एपीआई के लिए सबसे आम प्रारूप, हल्के JSON का उत्पादन करने के लिए System.Text.Json या Newtonsoft.Json का उपयोग करता है।
  • SOAP सीरियलाइज़ेशन यह पुराने वेब सेवाओं के लिए डेटा को SOAP संदेशों के रूप में प्रारूपित करता है।

C# में किसी ऑब्जेक्ट को सीरियलाइज़ कैसे करें

आइये एक उदाहरण देखें कि हम इसे कैसे प्राप्त कर सकते हैं।

हमारे उदाहरण में, हम कोड में नीचे दिए गए उच्च-स्तरीय चरणों का पालन करने जा रहे हैं

  1. ट्यूटोरियल नामक एक क्लास बनाएं जिसमें 2 गुण हों, अर्थात् आईडी, और नाम
  2. फिर हम क्लास से एक ऑब्जेक्ट बनाएंगे और ID प्रॉपर्टी को “1” का मान और name प्रॉपर्टी को “.Net” का मान देंगे।
  3. फिर हम उपरोक्त ऑब्जेक्ट को Example.txt नामक फ़ाइल में क्रमबद्ध करने के लिए क्रमांकन का उपयोग करेंगे
  4. अंत में, हम फ़ाइल से ऑब्जेक्ट को डीसेरिएलाइज़ करने और कंसोल में मान प्रदर्शित करने के लिए डीसेरिएलाइज़ेशन का उपयोग करेंगे।

कंसोल एप्लिकेशन की program.cs फ़ाइल में नीचे दिया गया कोड दर्ज करें।

चरण 1) कक्षा जोड़ें.

पहला चरण वह वर्ग जोड़ना है जिसका उपयोग क्रमांकन के लिए किया जाएगा

C# में किसी ऑब्जेक्ट को सीरियलाइज़ करें

Code स्पष्टीकरण: -

  1. जिस क्लास को सीरियलाइज़ किया जाना है, उसमें [Serializable] विशेषता होनी चाहिए। यह C# में एक कीवर्ड है। यह कीवर्ड फिर ट्यूटोरियल क्लास से जुड़ा होता है। यदि आप इस विशेषता का उल्लेख नहीं करते हैं, तो क्लास को सीरियलाइज़ करने का प्रयास करते समय आपको एक त्रुटि मिलेगी।
  2. अगला चरण उस क्लास की परिभाषा है जिसे सीरियलाइज़ किया जाएगा। यहाँ हम “ट्यूटोरियल” नामक एक क्लास को परिभाषित कर रहे हैं और 2 गुण प्रदान कर रहे हैं, एक “आईडी” और दूसरा “नाम” है।

चरण 2) ऑब्जेक्ट बनाएं.

इस चरण में, सबसे पहले हम ट्यूटोरियल क्लास का ऑब्जेक्ट बनाएंगे और उसे Example.txt नामक फ़ाइल में क्रमबद्ध करेंगे

C# में किसी ऑब्जेक्ट को सीरियलाइज़ करें

Code स्पष्टीकरण: -

  1. सबसे पहले, हम ट्यूटोरियल क्लास का एक ऑब्जेक्ट बनाते हैं। फिर हम ID को “1” और नाम प्रॉपर्टी को “.net” का मान देते हैं।
  2. फिर हम फ़ॉर्मेटर क्लास का उपयोग करते हैं जिसका उपयोग ऑब्जेक्ट को बाइनरी फ़ॉर्मेट में सीरियलाइज़ या कन्वर्ट करने के लिए किया जाता है। सीरियलाइज़ेशन में फ़ाइल में डेटा बाइनरी फ़ॉर्मेट में किया जाता है। इसके बाद, हम एक फ़ाइल स्ट्रीम ऑब्जेक्ट बनाते हैं। फ़ाइल स्ट्रीम ऑब्जेक्ट का उपयोग लेखन उद्देश्यों के लिए फ़ाइल Example.txt को खोलने के लिए किया जाता है। FileMode.Create और FileMode.Write कीवर्ड का उपयोग विशेष रूप से यह उल्लेख करने के लिए किया जाता है कि फ़ाइल को लेखन उद्देश्यों के लिए खोला जाना चाहिए।
  3. अंत में, हम बाइनरी डेटा को फ़ाइल में स्थानांतरित करने के लिए Serialize विधि का उपयोग करते हैं। फिर हम स्ट्रीम को बंद कर देते हैं, क्योंकि लेखन आपरेशन पूरा है।

चरण 3) विक्रमीकरण का उपयोग करें.

अंततः यह सुनिश्चित करने के लिए कि डेटा फ़ाइल में मौजूद है, हम फ़ाइल से ऑब्जेक्ट को डीसेरिएलाइज़ करने के लिए डीसेरिएलाइज़ेशन का उपयोग करते हैं।

C# में किसी ऑब्जेक्ट को सीरियलाइज़ करें

using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  [Serializable]
  class Tutorial
  {
  public int ID;
  public String Name;
   static void Main(string[] args)
   {
    Tutorial obj = new Tutorial();
    obj.ID = 1;
    obj.Name = ".Net";

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);

    formatter.Serialize(stream, obj);
    stream.Close();

    stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);
    Tutorial objnew = (Tutorial)formatter.Deserialize(stream);

    Console.WriteLine(objnew.ID);
    Console.WriteLine(objnew.Name);

    Console.ReadKey();
  }
 }
}

Code स्पष्टीकरण: -

  1. हम वस्तु बनाते हैं “धाराExample.txt फ़ाइल को केवल पढ़ने के लिए खोलने के लिए ” दबाएँ।
  2. फिर हम फ़ॉर्मेटर क्लास का उपयोग करते हैं जिसका उपयोग ऑब्जेक्ट को डीसेरीलाइज़ करने के लिए किया जाता है, जिसे Example.txt फ़ाइल में संग्रहीत किया जाता है। लौटाए गए ऑब्जेक्ट को ऑब्जेक्ट objnew पर सेट किया जाता है।
  3. अंत में, हम “ID” और “name” गुणों का उपयोग करके कंसोल पर ऑब्जेक्ट “objnew” के गुण प्रदर्शित करते हैं।

जब उपरोक्त कोड सेट किया जाता है, और प्रोजेक्ट का उपयोग करके चलाया जाता है विजुअल स्टूडियो, आपको नीचे दिया गया आउटपुट मिलेगा।

आउटपुट: -

C# में किसी ऑब्जेक्ट को सीरियलाइज़ करें

आप उपरोक्त आउटपुट से देख सकते हैं कि फ़ाइल से मान ठीक से विक्रमबद्ध किए गए थे और कंसोल में प्रदर्शित किए गए थे।

C# में JSON सीरियलाइज़ेशन

JSON आधुनिक अनुप्रयोगों और वेब API के लिए सबसे व्यापक रूप से उपयोग किया जाने वाला प्रारूप है। System.Text.Json नेमस्पेस एक ही मेथड कॉल के माध्यम से ऑब्जेक्ट्स को सीरियलाइज़ और डीसीरियलाइज़ करता है, जैसा कि नीचे दिखाया गया है।

using System;
using System.Text.Json;
namespace DemoApplication
{
  class Tutorial
  {
    public int ID { get; set; }
    public string Name { get; set; }
  }
  class Program
  {
    static void Main(string[] args)
    {
      Tutorial obj = new Tutorial { ID = 1, Name = ".Net" };
      string json = JsonSerializer.Serialize(obj);
      Console.WriteLine(json);

      Tutorial objnew = (Tutorial)JsonSerializer.Deserialize(json, typeof(Tutorial));
      Console.WriteLine(objnew.Name);
      Console.ReadKey();
    }
  }
}

आउटपुट:

{"ID":1,"Name":".Net"}
.Net

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

सीरियलाइज़ेशन C# ऑब्जेक्ट को बाइट्स (बाइनरी, XML या JSON) की स्ट्रीम में परिवर्तित करता है ताकि इसे किसी फ़ाइल में सहेजा जा सके या किसी अन्य एप्लिकेशन को भेजा जा सके। डीसीरियलाइज़ेशन उस डेटा से ऑब्जेक्ट को पुनः निर्मित करता है।

[Serializable] विशेषता किसी क्लास को इस प्रकार चिह्नित करती है कि उसके ऑब्जेक्ट को सीरियलाइज़ किया जा सके। इसके बिना, बाइनरी सीरियलाइज़ेशन ऑब्जेक्ट को फ़ाइल में लिखने का प्रयास करते समय एक अपवाद उत्पन्न करता है।

C# बाइनरी सीरियलाइज़ेशन (कॉम्पैक्ट, केवल .NET के लिए), XmlSerializer के माध्यम से XML सीरियलाइज़ेशन, System.Text.Json के माध्यम से JSON सीरियलाइज़ेशन और पुरानी वेब सेवाओं के लिए SOAP सीरियलाइज़ेशन का समर्थन करता है।

सीरियलाइज़ेशन किसी ऑब्जेक्ट के डेटा को किसी फ़ाइल या स्ट्रीम में लिखता है, जबकि डीसीरियलाइज़ेशन उस डेटा को वापस पढ़ता है और मेमोरी में मूल ऑब्जेक्ट का पुनर्निर्माण करता है।

बाइनरीफॉर्मेटर अब अप्रचलित हो चुका है और इसे असुरक्षित माना जाता है क्योंकि यह डीसीरियलाइजेशन के दौरान हानिकारक कोड को निष्पादित कर सकता है। Microsoft नए अनुप्रयोगों के लिए System.Text.Json या XmlSerializer की अनुशंसा की जाती है।

GitHub Copilot जैसे AI सहायक सीरियलाइज़ और डीसीरियलाइज़ कॉल को स्वतः पूर्ण करते हैं, [Serializable] विशेषता जोड़ते हैं, और एक संक्षिप्त टिप्पणी से JSON या XML सीरियलाइज़ेशन कोड उत्पन्न करते हैं।

जी हां। एआई-संचालित उपकरण मॉडल क्लास उत्पन्न करते हैं, JSON, XML और बाइनरी प्रारूपों में से चयन करते हैं, और त्रुटि प्रबंधन जोड़ते हैं ताकि आपका सीरियलाइज़ेशन कोड सुरक्षित और पूर्ण हो।

बाइनरी सीरियलाइज़ेशन System.Runtime.Serialization.Formatters.Binary का उपयोग करता है, JSON System.Text.Json का उपयोग करता है, और XML System.Xml.Serialization का उपयोग करता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: