C# (.NET) में ऑब्जेक्ट सीरियलाइज़ेशन: बुनियादी से उन्नत तकनीकों तक
सीरियलाइज़ेशन जटिल ऑब्जेक्ट्स (क्लास, स्ट्रक्चर) को ऐसे फॉर्मेट में बदलने की प्रक्रिया है जिसे फ़ाइल में सहेजा जा सके, नेटवर्क पर भेजा जा सके या डेटाबेस में लिखा जा सके। इसकी विपरीत प्रक्रिया (डेटा स्ट्रीम से ऑब्जेक्ट को पुनर्स्थापित करना) डीसीरियलाइज़ेशन कहलाती है। .NET प्लेटफ़ॉर्म में सीरियलाइज़ेशन के लिए कई बिल्ट-इन और थर्ड-पार्टी टूल्स हैं, प्रत्येक की अपनी विशेषताएँ, प्रदर्शन और उपयोग के क्षेत्र हैं।
इस लेख में हम C# में सीरियलाइज़ेशन के मुख्य तरीकों को समझेंगे: JSON (System.Text.Json और Newtonsoft.Json), XML (XmlSerializer), बाइनरी सीरियलाइज़ेशन (BinaryFormatter — पुराना है लेकिन अभी भी उपयोग होता है) और उच्च-प्रदर्शन परिदृश्यों के लिए Protocol Buffers (protobuf-net)।
1. System.Text.Json के साथ JSON में सीरियलाइज़ेशन
.NET Core 3.0 से शुरू करते हुए, Microsoft JSON के साथ काम करने के लिए System.Text.Json नेमस्पेस का उपयोग करने की सलाह देता है। यह एक तेज़, निम्न-स्तरीय और एसिंक्रोनस API है।
सीरियलाइज़ेशन और डीसीरियलाइज़ेशन का उदाहरण:
using System;using System.Text.Json;
public class Person{ public string Name { get; set; } public int Age { get; set; } public string Email { get; set; }}
class Program{ static void Main() { var person = new Person { Name = "इवान पेत्रोव", Age = 30, Email = "ivan@example.com" };
// JSON स्ट्रिंग में सीरियलाइज़ेशन string jsonString = JsonSerializer.Serialize(person); Console.WriteLine(jsonString); // आउटपुट: {"Name":"इवान पेत्रोव","Age":30,"Email":"ivan@example.com"}
// JSON से डीसीरियलाइज़ेशन string jsonInput = @"{""Name"":""मारिया"",""Age"":25,""Email"":""maria@test.ru""}"; Person restoredPerson = JsonSerializer.Deserialize<Person>(jsonInput); Console.WriteLine($"नाम: {restoredPerson.Name}, आयु: {restoredPerson.Age}"); }}सीरियलाइज़ेशन सेटिंग्स:
- null-गुणों को अनदेखा करना:
JsonSerializerOptions { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull } - फ़ॉर्मेटिंग (pretty print):
JsonSerializerOptions { WriteIndented = true } - चक्रीय संदर्भों के साथ काम करना:
ReferenceHandler.Preserve
2. Newtonsoft.Json (Json.NET) — क्लासिक
System.Text.Json के आने से पहले, Newtonsoft.Json लाइब्रेरी (NuGet के माध्यम से स्थापित) डी-फैक्टो मानक थी। यह अधिक परिदृश्यों का समर्थन करती है: डायनामिक ऑब्जेक्ट्स, एट्रीब्यूट्स, कन्वर्टर्स और लचीली सेटिंग्स।
using Newtonsoft.Json;
public class Order{ public int Id { get; set; } public decimal Amount { get; set; } [JsonIgnore] public string InternalNote { get; set; } // यह फ़ील्ड सीरियलाइज़ नहीं होगा}
var order = new Order { Id = 1, Amount = 99.99m, InternalNote = "गुप्त" };string json = JsonConvert.SerializeObject(order, Formatting.Indented);Console.WriteLine(json);// {// "Id": 1,// "Amount": 99.99// }
var deserialized = JsonConvert.DeserializeObject<Order>(json);3. XML में सीरियलाइज़ेशन (XmlSerializer)
.NET में XML फॉर्मेट के लिए XmlSerializer क्लास का उपयोग किया जाता है। यह पुराने सिस्टम और SOAP सेवाओं के साथ संगतता के लिए उपयुक्त है।
using System;using System.IO;using System.Xml.Serialization;
[Serializable]public class Product{ [XmlAttribute] public int Id { get; set; } [XmlElement("ProductName")] public string Name { get; set; }}
class Program{ static void Main() { var product = new Product { Id = 42, Name = "लैपटॉप" };
// सीरियलाइज़