C# में JSON के साथ कार्य का परिचय
JSON (JavaScript Object Notation) एक हल्का डेटा विनिमय प्रारूप है जो वेब सेवाओं, कॉन्फ़िगरेशन फ़ाइलों और API के बीच संपर्क के लिए मानक बन गया है। C# (.NET) पारिस्थितिकी तंत्र में, JSON के साथ कार्य करना एक बुनियादी कार्य है जिसका सामना हर डेवलपर करता है। इस लेख में, हम विस्तार से समझेंगे कि C# में डेटा का पार्सिंग (डीसीरियलाइज़ेशन) और सीरियलाइज़ेशन कैसे करें, दोनों अंतर्निहित लाइब्रेरी System.Text.Json और लोकप्रिय तृतीय-पक्ष लाइब्रेरी Newtonsoft.Json का उपयोग करके।
आप सीखेंगे कि C# ऑब्जेक्ट्स को JSON स्ट्रिंग्स में और वापस कैसे बदलें, नेस्टेड संरचनाओं के साथ कैसे काम करें, और व्यवहार में कौन सी समस्याएँ आ सकती हैं। यह सामग्री शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगी जो अपने ज्ञान को व्यवस्थित करना चाहते हैं।
C# ऑब्जेक्ट्स का JSON में सीरियलाइज़ेशन
सीरियलाइज़ेशन C# ऑब्जेक्ट (या अन्य डेटा संरचना) को JSON प्रारूप की स्ट्रिंग में बदलने की प्रक्रिया है। .NET में इसके लिए कई दृष्टिकोण हैं। हम दो मुख्य पर विचार करेंगे: System.Text.Json (Microsoft द्वारा अनुशंसित) और Newtonsoft.Json (पुराना, लेकिन अभी भी व्यापक रूप से उपयोग किया जाता है)।
System.Text.Json के साथ सीरियलाइज़ेशन
.NET Core 3.0 से शुरू करके, Microsoft ने JSON के साथ काम करने के लिए अपनी लाइब्रेरी System.Text.Json प्रस्तुत की। यह उच्च प्रदर्शन और न्यूनतम मेमोरी खपत द्वारा विशेषता है। सीरियलाइज़ेशन के लिए JsonSerializer.Serialize() विधि का उपयोग किया जाता है।
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" };
string json = JsonSerializer.Serialize(person); Console.WriteLine(json); }}निष्पादन का परिणाम:
{"Name":"इवान पेत्रोव","Age":30,"Email":"ivan@example.com"}Newtonsoft.Json के साथ सीरियलाइज़ेशन
Newtonsoft.Json लाइब्रेरी (जिसे Json.NET के नाम से भी जाना जाता है) लंबे समय से डी-फैक्टो मानक रही है। यह अंतर्निहित समाधान की तुलना में अधिक लचीलापन और सेटिंग्स प्रदान करती है। इसका उपयोग करने के लिए, NuGet पैकेज Newtonsoft.Json स्थापित करना आवश्यक है।
using System;using Newtonsoft.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 = 25, Email = "maria@example.com" };
string json = JsonConvert.SerializeObject(person); Console.WriteLine(json); }}परिणाम समान होगा, लेकिन Newtonsoft.Json डिफ़ॉल्ट रूप से गुणों के नामों के लिए कैमलकेस नोटेशन (camelCase) का उपयोग करता है, यदि यह कॉन्फ़िगर किया गया हो।
सीरियलाइज़ेशन को कॉन्फ़िगर करना
दोनों लाइब्रेरीज़ में, आउटपुट प्रारूप को नियंत्रित किया जा सकता है: null मानों को अनदेखा करना, CamelCase का उपयोग करना, JSON को इंडेंट के साथ फ़ॉर्मेट करना आदि।
सेटिंग्स के साथ System.Text.Json का उदाहरण:
var options = new JsonSerializerOptions{ WriteIndented = true, // इंडेंट के साथ सुंदर आउटपुट PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // कैमलकेस नोटेशन DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull // null को अनदेखा करें};
string json = JsonSerializer.Serialize(person, options);C# में JSON का पार्सिंग (डीसीरियलाइज़ेशन)
डीसीरियलाइज़ेशन एक विपरीत प्रक्रिया है: JSON स्ट्रिंग को C# ऑब्जेक्ट में बदलना। यह API से डेटा प्राप्त करने, कॉन्फ़िगरेशन फ़ाइलों को पढ़ने के लिए आवश्यक है।