C# (.NET) में JSON प्रोसेसिंग: एक संपूर्ण गाइड
\nJSON (JavaScript Object Notation) एक हल्का डेटा इंटरचेंज फॉर्मेट है, जिसका व्यापक रूप से वेब एप्लिकेशन, API और कॉन्फ़िगरेशन फ़ाइलों में उपयोग किया जाता है। C# (.NET) इकोसिस्टम में JSON के साथ काम करने के दो मुख्य दृष्टिकोण हैं: क्लासिक लाइब्रेरी Newtonsoft.Json (जिसे Json.NET के नाम से भी जाना जाता है) और आधुनिक अंतर्निहित लाइब्रेरी System.Text.Json, जो .NET Core 3.0 और उसके बाद के संस्करणों में उपलब्ध हुई। इस लेख में हम दोनों टूल्स, उनकी क्षमताओं, सिंटैक्स और सर्वोत्तम प्रथाओं पर विस्तार से चर्चा करेंगे।
\n\n1. Newtonsoft.Json (Json.NET)
\nNewtonsoft.Json लाइब्रेरी लंबे समय से C# में JSON के साथ काम करने का डी-फैक्टो मानक रही है। यह एक समृद्ध API, LINQ to JSON के लिए समर्थन, सीरियलाइज़ेशन और डीसीरियलाइज़ेशन के लिए लचीला कॉन्फ़िगरेशन प्रदान करती है। इसे NuGet के माध्यम से स्थापित किया जा सकता है:
Install-Package Newtonsoft.Json\n\n1.1. सीरियलाइज़ेशन और डीसीरियलाइज़ेशन
\nसबसे बुनियादी ऑपरेशन - ऑब्जेक्ट को JSON में और वापस कनवर्ट करना। Person क्लास पर विचार करें:
public class Person\n{\n public string Name { get; set; }\n public int Age { get; set; }\n public string Email { get; set; }\n}\n\nसीरियलाइज़ेशन (ऑब्जेक्ट → JSON):
\nvar person = new Person { Name = "इवान", Age = 30, Email = "ivan@example.com" };\nstring json = JsonConvert.SerializeObject(person, Formatting.Indented);\nConsole.WriteLine(json);\n\nडीसीरियलाइज़ेशन (JSON → ऑब्जेक्ट):
\nstring json = @"{""Name"":""मारिया"",""Age"":25,""Email"":""maria@example.com""}";\nPerson person = JsonConvert.DeserializeObject<Person>(json);\nConsole.WriteLine(person.Name); // मारिया\n\n1.2. JObject और JArray के साथ काम करना
\nNewtonsoft.Json लाइब्रेरी LINQ to JSON का समर्थन करती है, जो सख्ती से टाइप की गई क्लासेस बनाए बिना JSON तत्वों तक गतिशील रूप से पहुँचने की अनुमति देती है।
\nstring json = @"{""products"":[{""id"":1,""name"":""लैपटॉप""},{""id"":2,""name"":""माउस""}]}";\nJObject obj = JObject.Parse(json);\nJArray products = (JArray)obj["products"];\n\nforeach (var product in products)\n{\n int id = (int)product["id"];\n string name = (string)product["name"];\n Console.WriteLine($"ID: {id}, Name: {name}");\n}\n\n1.3. सीरियलाइज़ेशन को कॉन्फ़िगर करने के लिए विशेषताएँ
\nविशेषताओं की सहायता से, आप JSON में प्रॉपर्टी के नामों को नियंत्रित कर सकते हैं, फ़ील्ड को अनदेखा कर सकते हैं, डिफ़ॉल्ट मान सेट कर सकते हैं और बहुत कुछ कर सकते हैं।
\npublic class User\n{\n [JsonProperty("user_name")]\n public string Name { get; set; }\n\n [JsonIgnore]\n public string Password { get; set; }\n\n [JsonProperty("registration_date")]\n public DateTime CreatedAt { get; set; }\n}\n\n// सीरियलाइज़ेशन के दौरान Password को छोड़ दिया जाएगा, और Name "user_name" बन जाएगा\nstring json = JsonConvert.SerializeObject(user);\n\n2. System.Text.Json (अंतर्निहित .NET लाइब्रेरी)
\n.NET Core 3.0 से शुरू करते हुए, Microsoft ने अपनी स्वयं की लाइब्रेरी System.Text.Json प्रस्तुत की, जो प्रदर्शन और न्यूनतम मेमोरी खपत के लिए अनुकूलित है। इसे अतिरिक्त पैकेज (कुछ एक्सटेंशन को छोड़कर) स्थापित करने की आवश्यकता नहीं है।
2.1. सीरियलाइज़ेशन और डीसीरियलाइज़ेशन
\nSystem.Text.Json के साथ काम करना Newtonsoft.Json के समान है, लेकिन सिंटैक्स और डिफ़ॉल्ट व्यवहार (जैसे, केस-सेंसिटिविटी) में कुछ अंतर हैं।
using System.Text.Json;\n\nvar person = new Person { Name = "एलेक्सी", Age = 28, Email = "alex@example.com" };\nstring json = JsonSerializer.Serialize(person, new JsonSerializerOptions { WriteIndented = true });\nConsole.WriteLine(json);\n\n// डीसीरियलाइज़ेशन\nstring jsonInput = @"{""Name"":""ओल्गा"",""Age"":32,""Email"":""olga@example.com""}";\nPerson deserializedPerson = JsonSerializer.Deserialize<Person>(jsonInput);\n\nमहत्वपूर्ण! डिफ़ॉल्ट रूप से, System.Text.Json ट