JSON से C# रूपांतरण वह प्रक्रिया है जिसमें JSON डेटा से strongly-typed C# क्लास परिभाषाएँ जनरेट की जाती हैं। जब कोई .NET एप्लिकेशन किसी API, कॉन्फ़िगरेशन फ़ाइल या message queue से JSON प्राप्त करती है, तो उस डेटा को ऑब्जेक्ट में deserialize करने के लिए C# क्लास की आवश्यकता होती है। इन क्लासों को हाथ से लिखना थकाऊ और त्रुटि-प्रवण होता है, विशेष रूप से तब जब JSON में नेस्टेड ऑब्जेक्ट, ऐरे और मिश्रित प्रकार हों।
JSON to C# क्लास जनरेटर आपके JSON की संरचना और मानों की जाँच करता है, प्रत्येक फ़ील्ड के लिए उचित C# प्रकार अनुमानित करता है और property accessors तथा serialization एट्रिब्यूट सहित क्लास परिभाषाएँ तैयार करता है। आउटपुट .NET naming conventions का अनुसरण करता है: PascalCase प्रॉपर्टी नाम, मूल camelCase या snake_case JSON कुंजियों से मैपिंग के लिए JsonPropertyName एट्रिब्यूट, और ऐरे के लिए List'<'T'>' का सही उपयोग।
यह रूपांतरण ASP.NET Core web APIs, Azure Functions और किसी भी ऐसी .NET सेवा में विशेष रूप से सामान्य है जो बाहरी JSON डेटा का उपभोग करती है। dynamic या Dictionary'<'string, object'>' उपयोग करने के बजाय, typed क्लास compile-time सुरक्षा, IntelliSense समर्थन और फ़ील्ड नाम की टाइपो से सुरक्षा देती हैं जो अन्यथा केवल runtime पर सामने आती। इस उपकरण में अपना JSON चिपकाएँ और तुरंत उपयोग के लिए तैयार C# क्लास पाएं।
JSON to C# जनरेटर का उपयोग क्यों करें?
JSON samples से C# model क्लास हाथ से लिखने में समय लगता है और human errors होती हैं। जनरेटर दोहराव वाले हिस्से संभालता है ताकि आप business logic पर ध्यान केंद्रित कर सकें।
⚡
तुरंत क्लास जनरेशन
अपना JSON चिपकाएँ और एक सेकंड से भी कम समय में पूरी C# क्लास पाएं। कोई manual property typing नहीं, कोई फ़ील्ड भूलने की संभावना नहीं।
🔒
डेटा बाहर नहीं जाता
सभी रूपांतरण आपके ब्राउज़र में चलते हैं। आपका JSON डेटा कभी आपकी मशीन से बाहर नहीं जाता, इसलिए API keys, tokens और personal जानकारी private रहती है।
📋
सही एट्रिब्यूट मैपिंग
जनरेट की गई क्लासों में JsonPropertyName एट्रिब्यूट शामिल होते हैं जो PascalCase C# प्रॉपर्टी को मूल JSON कुंजी नामों से मैप करते हैं और deserialization में असंगति से बचाते हैं।
🌐
खाता या इंस्टॉलेशन की आवश्यकता नहीं
पेज खोलें और अपना JSON चिपकाएँ। कोई NuGet पैकेज इंस्टॉल नहीं, कोई Visual Studio extension कॉन्फ़िगर नहीं, कोई साइनअप फ़ॉर्म नहीं।
JSON to C# के उपयोग के मामले
बैकएंड API एकीकरण
Third-party REST APIs के लिए request और response model जनरेट करें। API docs से sample JSON चिपकाएँ और HttpClient calls के लिए ready-to-use C# क्लास पाएं।
ASP.NET Core Controllers
action method parameters के लिए model क्लास बनाएं। जब आपका endpoint JSON body accept करता है, तो जनरेट की गई क्लास automatic model binding और validation देती है।
Azure Functions और Serverless
Azure Functions के लिए इनपुट और आउटपुट bindings बनाएं जो queues, event hubs या HTTP triggers से JSON संदेश संसाधित करती हैं।
कॉन्फ़िगरेशन Deserialization
appsettings.json अनुभागों या बाहरी config फ़ाइलों को dependency injection में IOptions'<'T'>' के साथ उपयोग के लिए typed C# options क्लास में बदलें।
डेटाबेस Seeding और Migration
JSON fixture फ़ाइलों को Entity Framework seed डेटा, integration test सेटअप या डेटा migration scripts के लिए C# ऑब्जेक्ट में बदलें।
C# प्रकार प्रणाली सीखना
.NET में नए छात्र और डेवलपर देख सकते हैं कि JSON प्रकार C# प्रकारों से कैसे संगत होते हैं, property accessors को समझ सकते हैं और उदाहरण द्वारा serialization एट्रिब्यूट के बारे में जान सकते हैं।
JSON से C# प्रकार मैपिंग संदर्भ
प्रत्येक JSON value type एक specific C# type से map होता है। जनरेटर सबसे सटीक type चुनने के लिए actual values का analysis करता है। उदाहरण के लिए, बिना decimal point वाला JSON number int बनता है, जबकि 3.14 double बनता है। null values object? (nullable reference type) देते हैं क्योंकि सिर्फ null से actual type पता नहीं चल सकता।
JSON प्रकार
उदाहरण
C# प्रकार
string
"hello"
string
number (int)
42
int
number (float)
3.14
double
boolean
true, false
bool
null
null
object?
object
{"key": "value"}
nested class
array
[1, 2, 3]
List<int>
array of objects
[{"id": 1}]
List<ClassName>
System.Text.Json बनाम Newtonsoft.Json
.NET में दो प्रमुख JSON serialization लाइब्रेरी हैं। इस उपकरण की जनरेट की गई क्लासें System.Text.Json एट्रिब्यूट (JsonPropertyName) उपयोग करती हैं, जो .NET Core 3.0 से अंतर्निर्मित विकल्प है। यदि आपका प्रोजेक्ट Newtonsoft.Json उपयोग करता है, तो आप एट्रिब्यूट बदल सकते हैं।
System.Text.Json
.NET में Core 3.0 से अंतर्निर्मित। Newtonsoft की तुलना में तेज़ और कम मेमोरी आवंटन। प्रॉपर्टी मैपिंग के लिए [JsonPropertyName] उपयोग करता है। नए .NET 6+ प्रोजेक्ट के लिए डिफ़ॉल्ट विकल्प। JsonPath या reference handling जैसी सभी Newtonsoft सुविधाओं का समर्थन नहीं करता।
Newtonsoft.Json
मूल .NET JSON लाइब्रेरी (Json.NET)। प्रॉपर्टी मैपिंग के लिए [JsonProperty] उपयोग करता है। अधिक उन्नत परिदृश्यों का समर्थन करता है: polymorphic serialization, JsonPath queries, अधिक लचीलेपन के साथ custom converters। पुराने codebases और उन प्रोजेक्ट में अभी भी सामान्य है जिन्हें System.Text.Json में अनुपलब्ध सुविधाओं की आवश्यकता है।
कोड उदाहरण
ये उदाहरण दर्शाते हैं कि JSON से जनरेट की गई C# क्लास को कैसे परिभाषित और उपयोग किया जाए — दोनों प्रमुख serialization लाइब्रेरी का उपयोग करते हुए, साथ ही command line से जनरेशन स्वचालित करने का तरीका भी।
C# (System.Text.Json)
using System.Text.Json;
var json = """{"id": 1, "name": "Alice", "active": true}""";
var user = JsonSerializer.Deserialize<User>(json);
Console.WriteLine(user.Name); // → "Alice"
public class User
{
[JsonPropertyName("id")]
public int Id { get; set; }
[JsonPropertyName("name")]
public string Name { get; set; }
[JsonPropertyName("active")]
public bool Active { get; set; }
}
C# (Newtonsoft.Json)
using Newtonsoft.Json;
var json = @"{""id"": 1, ""name"": ""Alice"", ""scores"": [98, 85]}";
var user = JsonConvert.DeserializeObject<User>(json);
Console.WriteLine(user.Scores[0]); // → 98
public class User
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("scores")]
public List<int> Scores { get; set; }
}
JavaScript (quicktype)
// Install: npm install -g quicktype
// Generate C# classes from JSON:
// quicktype --lang csharp --src data.json --out Models.cs
// From stdin:
// echo '{"id": 1, "name": "Alice"}' | quicktype --lang csharp
// Output:
// public class Root
// {
// [JsonPropertyName("id")]
// public int Id { get; set; }
//
// [JsonPropertyName("name")]
// public string Name { get; set; }
// }
JsonPropertyName और JsonProperty में क्या अंतर है?
JsonPropertyName, System.Text.Json का attribute है जो built-in .NET serializer है। JsonProperty, Newtonsoft.Json (Json.NET) से है जो एक third-party library है। दोनों C# property name को JSON field name से map करते हैं, लेकिन ये अलग-अलग namespaces से हैं और interchangeable नहीं हैं। नए .NET 6+ प्रोजेक्ट के लिए JsonPropertyName उपयोग करें और JsonProperty तब जब आपका प्रोजेक्ट पहले से Newtonsoft पर निर्भर हो।
जनरेटर नेस्टेड JSON ऑब्जेक्ट को कैसे संभालता है?
प्रत्येक नेस्टेड ऑब्जेक्ट अपनी अलग C# क्लास बन जाता है। parent क्लास में प्रॉपर्टी नेस्टेड क्लास को अपने प्रकार के रूप में उपयोग करती है। उदाहरण के लिए, यदि आपके JSON में "street" और "city" वाले ऑब्जेक्ट के साथ "address" फ़ील्ड है, तो जनरेटर एक Address क्लास बनाता है और parent क्लास में प्रॉपर्टी का प्रकार Address रखता है।
मिश्रित प्रकारों वाले JSON ऐरे के साथ क्या होता है?
जनरेटर ऐरे element प्रकार पहले non-null element से अनुमानित करता है। यदि ऐरे में मिश्रित प्रकार हों (strings और numbers एक साथ), तो जनरेट किया गया प्रकार List'<'object'>' पर वापस आता है। व्यवहार में, सुव्यवस्थित API प्रतिक्रियाएँ एकल ऐरे के भीतर शायद ही कभी प्रकार मिश्रित करती हैं।
क्या मैं जनरेट की गई क्लासों को Entity Framework के साथ उपयोग कर सकता हूँ?
हाँ, लेकिन आपको EF-विशिष्ट annotations जैसे [Key], [Required], या [Column] एट्रिब्यूट जोड़ने होंगे। जनरेट की गई क्लासें प्रॉपर्टी संरचना प्रदान करती हैं; इन्हें एक scaffold के रूप में मानें और ऊपर से EF कॉन्फ़िगरेशन जोड़ें। EF एक parameterless constructor की भी अपेक्षा करता है, जो जनरेट की गई क्लासों में डिफ़ॉल्ट रूप से पहले से मौजूद होता है।
JSON में null मान C# में कैसे बदलते हैं?
JSON null value object? type generate करता है क्योंकि जनरेटर सिर्फ null से सही type पता नहीं कर सकता। Generation के बाद, API schema की अपनी knowledge के basis पर object? को सही nullable type (string?, int?, या कोई specific class?) से replace करें।
क्या camelCase JSON स्वचालित रूप से PascalCase C# प्रॉपर्टी से मैप होता है?
हाँ। जनरेटर "firstName" जैसी JSON कुंजियों को FirstName जैसी PascalCase प्रॉपर्टी में बदलता है और एक [JsonPropertyName("firstName")] एट्रिब्यूट जोड़ता है। यह सुनिश्चित करता है कि serializer serialization और deserialization के दौरान दोनों naming conventions के बीच स्वचालित रूप से मैप करे।
C# में वैकल्पिक फ़ील्ड वाले JSON को कैसे संभालें?
प्रॉपर्टी प्रकार को nullable बनाएं (जैसे string? या int?) और एक डिफ़ॉल्ट मान सेट करें। System.Text.Json के साथ, आप serialization के दौरान null मान छोड़ने के लिए JsonSerializerOptions.DefaultIgnoreCondition भी कॉन्फ़िगर कर सकते हैं। जनरेटर डिफ़ॉल्ट रूप से non-nullable प्रकार उत्पन्न करता है, इसलिए अपने API contract के आधार पर nullability की समीक्षा करें और समायोजित करें।