C# में JSON के साथ काम करने का परिचय
\n\nJSON (JavaScript Object Notation) एक हल्का डेटा एक्सचेंज फॉर्मेट है जो वेब डेवलपमेंट, मोबाइल ऐप्स और माइक्रोसर्विसेज़ में व्यापक रूप से उपयोग किया जाता है। C# डेवलपर के लिए JSON के साथ काम करना एक अनिवार्य कौशल है। इस लेख में, हम आधुनिक नेमस्पेस System.Text.Json का उपयोग करके JSON पार्सिंग (डी-सीरियलाइज़ेशन) और सीरियलाइज़ेशन की मूल बातें समझेंगे, जो .NET Core 3.0 और उससे ऊपर, साथ ही .NET 5/6/7/8 में शामिल है।
हम निम्नलिखित विषयों को कवर करेंगे:
\n- \n
- सीरियलाइज़ेशन और डी-सीरियलाइज़ेशन क्या है \n
- C# ऑब्जेक्ट को JSON स्ट्रिंग में कैसे बदलें \n
- JSON को कैसे पढ़ें और उसे वापस ऑब्जेक्ट में बदलें \n
- नेस्टेड ऑब्जेक्ट और कलेक्शन के साथ काम करना \n
- एरर हैंडलिंग और सीरियलाइज़ेशन को कस्टमाइज़ करना \n
सभी कोड उदाहरण C# (.NET 6+) कंसोल एप्लिकेशन के लिए लिखे गए हैं। आप इन्हें कॉपी करके तुरंत चला सकते हैं।
\n\n1. सीरियलाइज़ेशन की मूल बातें: ऑब्जेक्ट → JSON
\n\nसीरियलाइज़ेशन एक प्रक्रिया है जिसमें किसी ऑब्जेक्ट (या डेटा स्ट्रक्चर) को JSON फॉर्मेट की स्ट्रिंग में बदला जाता है। C# में इसके लिए System.Text.Json नेमस्पेस के JsonSerializer क्लास का उपयोग किया जाता है।
एक सरल मॉडल बनाना
\n\nमान लीजिए हमारे पास एक 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ऑब्जेक्ट को सीरियलाइज़ करना
\n\nअब एक इंस्टेंस बनाते हैं और उसे JSON में बदलते हैं:
\n\nusing System.Text.Json;\n\nPerson person = new Person\n{\n Name = "राहुल शर्मा",\n Age = 30,\n Email = "rahul@example.com"\n};\n\nstring jsonString = JsonSerializer.Serialize(person);\nConsole.WriteLine(jsonString);\n\nपरिणाम:
\n\n{"Name":"राहुल शर्मा","Age":30,"Email":"rahul@example.com"}\n\nडिफ़ॉल्ट रूप से, JsonSerializer प्रॉपर्टी नामों के लिए camelCase का उपयोग करता है (पहला अक्षर छोटा), लेकिन हमारे उदाहरण में नाम बड़े अक्षरों में रहे क्योंकि हमने सेटिंग्स नहीं बदली। अगर आपको सख्त camelCase चाहिए, तो JsonSerializerOptions का उपयोग करें:
var options = new JsonSerializerOptions\n{\n PropertyNamingPolicy = JsonNamingPolicy.CamelCase\n};\nstring jsonCamelCase = JsonSerializer.Serialize(person, options);\nConsole.WriteLine(jsonCamelCase);\n// {"name":"राहुल शर्मा","age":30,"email":"rahul@example.com"}\n\n2. डी-सीरियलाइज़ेशन: JSON → ऑब्जेक्ट
\n\nडी-सीरियलाइज़ेशन उल्टी प्रक्रिया है: हम JSON स्ट्रिंग लेते हैं और उसे C# ऑब्जेक्ट में बदलते हैं।
\n\nडी-सीरियलाइज़ेशन का सरल उदाहरण
\n\nमान लीजिए हमें API से JSON मिला:
\n\nstring jsonFromApi = @"{""Name"":""प्रिया सिंह"",""Age"":25,""Email"":""priya@test.com""}";\n\nPerson? personFromJson = JsonSerializer.Deserialize<Person>(jsonFromApi);\n\nif (personFromJson != null)\n{\n Console.WriteLine($"नाम: {personFromJson.Name}, उम्र: {personFromJson.Age}");\n}\n\nPerson टाइप के बाद ? चिह्न पर ध्यान दें — यह nullable-एनोटेशन है, जो बताता है कि परिणाम null हो सकता है (उदाहरण के लिए, अगर JSON गलत है)।
एरे और लिस्ट के साथ काम करना
\n\nअक्सर JSON में ऑब्जेक्ट का कलेक्शन होता है। मान लीजिए हमारे पास उपयोगकर्ताओं की एक एरे है:
\n\nstring jsonArray = @"\n[\n {""Name"":""अमित"",""Age"":35},\n {""Name"":""सीमा"",""Age"":28},\n {""Name"":""विकास"",""Age"":42}\n]";\n\nList<Person>? people = JsonSerializer.Deserialize<List<Person>>(jsonArray);\n\nif (people != null)\n{\n foreach (var p in people)\n {\n Console.WriteLine($"{p.Name} - {p.Age} साल");\n }\n}\n\n3. नेस्टेड ऑब्जेक्ट और जटिल स्ट्रक्चर के साथ काम करना
\n\nवास्तविक JSON डेटा शायद ही कभी फ्लैट होता है। आइए देखें