परिचय: प्रत्येक C# डेवलपर को JSON में ऑब्जेक्ट को सीरियलाइज़ करना क्यों आना चाहिए
\n\nक्या आपने कभी सोचा है कि आपका कोड एक दिन में कितनी बार जटिल C# ऑब्जेक्ट को कॉम्पैक्ट JSON-स्ट्रिंग में बदलता है? वेब-API के साथ काम करना, कॉन्फ़िगरेशन सहेजना, माइक्रोसर्विसेज के बीच डेटा ट्रांसफर करना — हर जगह हम सीरियलाइज़ेशन का सामना करते हैं। प्रश्न "How do I turn a C# object into a JSON string in .NET?" — Stack Overflow पर सबसे लोकप्रिय में से एक है, और यह कोई संयोग नहीं है। आप यह कैसे करते हैं, इस पर आपके एप्लिकेशन की गति और प्रतिक्रिया निर्भर करती है।
\n\nइस लेख में, हम केवल ऑब्जेक्ट को JSON-स्ट्रिंग में बदलने का तरीका नहीं दिखाएंगे। हम इस प्रक्रिया के अनुकूलन और प्रदर्शन का विश्लेषण करेंगे: लाइब्रेरी चुनने से लेकर सीरियलाइज़र की बारीक ट्यूनिंग तक। आप सीखेंगे कि सामान्य गलतियों से कैसे बचें जो आपके एप्लिकेशन को धीमा करती हैं, और ऐसा कोड लिखना सीखेंगे जो बिजली की गति से काम करता है।
\n\nमूल तरीका: C# ऑब्जेक्ट को JSON स्ट्रिंग में कैसे बदलें
\n\nचलिए क्लासिक से शुरू करते हैं। मान लीजिए कि हमारे पास एक सरल क्लास User है:
public class User\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public string Email { get; set; }\n}\n\nइसे सीरियलाइज़ करने का सबसे सरल तरीका Newtonsoft.Json (जिसे Json.NET भी कहा जाता है) का उपयोग करना है:
\n\nusing Newtonsoft.Json;\n\nvar user = new User { Id = 1, Name = "Алексей", Email = "alex@example.com" };\nstring json = JsonConvert.SerializeObject(user);\nConsole.WriteLine(json); \n// {"Id":1,"Name":"Алексей","Email":"alex@example.com"}\n\n.NET Core 3.0 के आगमन के साथ, मूल System.Text.Json आया — एक तेज़ और हल्का विकल्प:
\n\nusing System.Text.Json;\n\nvar user = new User { Id = 1, Name = "Алексей", Email = "alex@example.com" };\nstring json = JsonSerializer.Serialize(user);\nConsole.WriteLine(json);\n// {"Id":1,"Name":"Алексей","Email":"alex@example.com"}\n\nऐसा लगता है कि कोई अंतर नहीं है। लेकिन जब आपका एप्लिकेशन प्रति सेकंड हजारों अनुरोधों को संसाधित करता है, तो सीरियलाइज़र का चुनाव महत्वपूर्ण हो जाता है।
\n\nप्रदर्शन: Newtonsoft.Json बनाम System.Text.Json
\n\nआइए .NET 8 में सीरियलाइज़ेशन प्रदर्शन पर नज़र डालें। 1 मिलियन ऑपरेशन के परीक्षणों में:
\n\n- \n
- System.Text.Json — सरल ऑब्जेक्ट को सीरियलाइज़ करने में Newtonsoft.Json से औसतन 40-60% तेज़ है। \n
- Newtonsoft.Json — गति में पिछड़ता है, लेकिन लचीलेपन में जीतता है: अधिक कस्टम कन्वर्टर्स और एट्रीब्यूट्स का समर्थन करता है। \n
- मेमोरी खपत — System.Text.Json कम कचरा उत्पन्न करता है, जिससे गार्बेज कलेक्टर (GC) पर भार कम होता है। \n
हालांकि, एक बारीक बात है: यदि आपको JsonIgnore, JsonPropertyName या जटिल कन्वर्टर्स के समर्थन की आवश्यकता है, तो Newtonsoft.Json अभी भी अपरिहार्य है। लेकिन .NET 6+ पर अधिकांश आधुनिक प्रोजेक्ट्स के लिए System.Text.Json का उपयोग करने की अनुशंसा की जाती है।
सीरियलाइज़ेशन अनुकूलन: 5 व्यावहारिक सुझाव
\n\nअब सबसे दिलचस्प भाग पर आते हैं — अपने कोड को और तेज़ कैसे बनाएं।
\n\n1. सोर्स जनरेटर का उपयोग करें
\n\nSystem.Text.Json source generation का समर्थन करता है — यह रनटाइम के बजाय बिल्ड समय पर सीरियलाइज़ेशन कोड को संकलित करता है। परिणाम: 2-3 गुना तेज़ी!
\n\n[JsonSerializable(typeof(User))]\npublic partial class UserContext : JsonSerializerContext\n{\n}\n\n// उपयोग:\nstring json = JsonSerializer.Serialize(user, UserContext.Default.User);\n\nयह दृष्टिकोण विशेष रूप से बड़े मॉडल और उच्च-लोड एप्लिकेशन के लिए प्रभावी है।
\n\n2. सीरियलाइज़र को अपने कार्यों के अनुसार कॉन्फ़िगर करें
\n\nडिफ़ॉल्ट सेटिंग्स का उपयोग न करें। अनावश्यक विकल्पों को बंद करें:
\n\nvar options = new JsonSerializerOptions\n{\n PropertyNamingPolicy = JsonNami