logo
GeekFormat

JSON से C#

मुफ्त ऑनलाइन JSON से C# टूल। API रिस्पॉन्स या कॉन्फ़िगरेशन JSON को एक क्लिक में मानक C# क्लासेस में बदलें, ASP.NET Core, Unity, Blazor, .NET MAUI प्रोजेक्ट्स में सीधे उपयोग करें। [JsonProperty] एनोटेशन, List जेनेरिक, Nullable<T>, नेस्टेड क्लासेस के स्वचालित विभाजन का समर्थन, पूरी तरह से ब्राउज़र में लोकल जनरेशन।

संबंधित सुझाव

JSON से C# परिचय: JSON डेटा को कंपाइल करने योग्य C# POCO क्लासेस में बदलना

JSON से C# JSON फ़ॉर्मेट में डेटा (ऑब्जेक्ट्स या ऐरे) को C# क्लास परिभाषाओं (POCO, Plain Old CLR Object) में बदलने की प्रक्रिया है। C# .NET इकोसिस्टम की मुख्य भाषा है, जिसका व्यापक रूप से ASP.NET Core बैकएंड, Unity गेम्स, .NET MAUI क्रॉस-प्लेटफ़ॉर्म ऐप्स, Blazor WebAssembly, डेस्कटॉप ऐप्स (WPF/WinForms), Azure क्लाउड सर्विसेज आदि परिदृश्यों में उपयोग होता है। विकास के दौरान अक्सर API डॉक्यूमेंटेशन या वास्तविक रिस्पॉन्स में उदाहरण JSON को C# प्रकारों में बदलने की आवश्यकता होती है, मैन्युअल रूप से क्लासेस लिखना न केवल बहुत दोहराव वाला काम है, बल्कि फ़ील्ड प्रकारों और एनोटेशन में गलती करने की भी प्रवृत्ति होती है, इसलिए यह टूल इस प्रक्रिया को स्वचालित करने का लक्ष्य रखता है।

यह टूल ब्राउज़र में लोकल रूप से quicktype-core के आधार पर काम करता है, मानक POCO क्लास कोड जनरेट करने के लिए C# रेंडरर का उपयोग करता है, डिफ़ॉल्ट आउटपुट में using System.Collections.Generic; और [JsonProperty("मूल कुंजी")] एनोटेशन (Newtonsoft.Json संगतता मोड) शामिल हैं, Visual Studio में सीधे कंपाइल करने के लिए खोला जा सकता है। यह केवल एक प्रकार का ड्राफ्ट नहीं है, बल्कि एक C# क्लास है जिसे NuGet पैकेज के साथ .NET प्रोजेक्ट में रखने के बाद तुरंत उपयोग किया जा सकता है।

टाइप इंफरेंस JSON से C# का कोर है। टूल JSON बुनियादी प्रकारों को .NET मानक प्रकारों से मैप करता है: स्ट्रिंग→string, पूर्णांक→long, फ़्लोटिंग पॉइंट→double, बूलियन→bool, ऐरे→List<T>, नेस्टेड ऑब्जेक्ट→स्वतंत्र क्लास, null मान→Nullable<T> (जैसे long? / bool? / string?)। नेस्टेड ऑब्जेक्ट्स के लिए, टूल स्वचालित रूप से प्रत्येक स्तर के लिए एक नई क्लास जनरेट करता है और फ़ील्ड नाम के पहले अक्षर को बड़ा करके नाम देता है, उदाहरण के लिए address फ़ील्ड Address क्लास जनरेट करेगी, items ऐरे में ऑब्जेक्ट Item क्लास जनरेट करेगा।

आधुनिक C# सिंटैक्स के साथ एकीकरण: यह टूल डिफ़ॉल्ट रूप से सीरियलाइज़ेबल POCO (पब्लिक { get; set; } प्रॉपर्टीज़) जनरेट करता है। अपरिवर्तनीयता पर जोर देने वाले प्रोजेक्ट्स के लिए, डेवलपर्स class को C# 9+ record प्रकार में बदल सकते हैं और { get; set; } को init-only प्रॉपर्टीज़ में बदल सकते हैं (public string Name { get; init; }), JsonSerializer.Deserialize<T>(jsonString) के साथ उपयोग करने पर कंपाइल समय पर यह सुनिश्चित किया जा सकता है कि डेटा संशोधित नहीं होगा, यह ASP.NET Core 7+ Minimal API, Entity Framework Core 8+ अपरिवर्तनीय एंटिटी डिज़ाइन ट्रेंड के अनुरूप है।

कुछ ऑनलाइन टूल्स के विपरीत जिन्हें प्रोसेसिंग के लिए JSON को सर्वर पर अपलोड करने की आवश्यकता होती है, इस टूल की सभी गणनाएं पूरी तरह से ब्राउज़र में पूरी होती हैं। quicktype-core Web Worker के माध्यम से लोड और निष्पादित होता है, JSON पार्सिंग, टाइप इंफरेंस, C# कोड जनरेशन और फ़ाइल डाउनलोड सभी लोकल रूप से होते हैं, किसी भी सर्वर पर डेटा नहीं भेजा जाता। यह API कुंजियों, उपयोगकर्ता गोपनीयता फ़ील्ड्स, अप्रकाशित व्यावसायिक स्ट्रक्चर वाले JSON के लिए विशेष रूप से महत्वपूर्ण है, पेज बंद करने के बाद डेटा मेमोरी से हट जाता है।

यह ध्यान देने योग्य है कि स्वचालित रूप से जनरेट किया गया कोड एक प्रारंभिक बिंदु है, अंतिम बिंदु नहीं। टूल JSON उदाहरण के आधार पर प्रकारों का अनुमान लगाता है, व्यावसायिक तर्क में अधिक सटीक प्रकारों को निर्धारित नहीं कर सकता (उदाहरण के लिए URL, Email, ID जैसे सिमेंटिक प्रकार सभी string के रूप में अनुमानित होंगे)। snake_case JSON फ़ील्ड्स के लिए, C# फ़ील्ड्स PascalCase नामकरण बनाए रखेंगे (user_name → UserName), लेकिन [JsonProperty] एनोटेशन मूल कुंजी को बनाए रखेगा, डिसीरियलाइज़ेशन के दौरान स्वचालित रूप से मैप होगा। जनरेट किए गए परिणाम को पहले ड्राफ्ट के रूप में मानने और फिर प्रोजेक्ट विनिर्देशों के अनुसार फ़ील्ड नाम, प्रकार, एट्रिब्यूट्स को फाइन-ट्यून करने की सिफारिश की जाती है।

उपयोग के मामले

  • ASP.NET Core Web API: OpenAPI/Swagger डॉक्यूमेंटेशन में उदाहरण JSON को DTO क्लासेस में बदलना, [FromBody] मॉडल बाइंडिंग के साथ फ्रंटएंड से रिक्वेस्ट प्राप्त करना
  • ASP.NET Core MVC: फॉर्म/JSON रिक्वेस्ट बॉडी को स्ट्रॉन्ग टाइप Model में बदलना, ModelState स्वचालित सत्यापन के साथ उपयोग करना
  • Newtonsoft.Json डिसीरियलाइज़ेशन: थर्ड-पार्टी इंटरफेस रिस्पॉन्स JSON को [JsonProperty] वाली POCO क्लासेस में बदलना, मैन्युअल फ़ील्ड मैपिंग की आवश्यकता नहीं
  • System.Text.Json उच्च-प्रदर्शन परिदृश्य: JSON को record प्रकार या init-only प्रॉपर्टीज़ में बदलना, JsonSerializer.Deserialize<T> के साथ स्टार्टअप स्पीड बढ़ाना
  • Unity गेम स्क्रिप्ट्स: नेटवर्क API द्वारा रिटर्न किए गए JSON (प्लेयर डेटा, लेवल कॉन्फ़िगरेशन, शॉप आइटम, रैंकिंग) को सीरियलाइज़ेबल ScriptableObject डेटा मॉडल में बदलना
  • .NET MAUI क्रॉस-प्लेटफ़ॉर्म ऐप्स: बैकएंड API से JSON को Model क्लासेस में बदलना, XAML डेटा बाइंडिंग में उपयोग करना, iOS/Android/Windows पर व्यावसायिक मॉडल साझा करना
  • Blazor Server / WebAssembly: API से JSON को स्ट्रॉन्ग टाइप कंपोनेंट पैरामीटर्स/सर्वर मॉडल में बदलना, @inject HttpClient के साथ फ्रंटएंड/बैकएंड साझा प्रकार उपभोग
  • Entity Framework Core: डेटाबेस से एक्सपोर्ट किए गए JSON डॉक्यूमेंट्स को एंटिटी क्लासेस में बदलना, EF Core मॉडल माइग्रेशन के लिए रेफरेंस बेस क्लासेस के रूप में उपयोग करना, [Key]/[Required] जैसे डेटा एनोटेशन के साथ उपयोग करना
  • Azure Functions / AWS Lambda: Event Grid/SNS/API Gateway/Cosmos DB ट्रिगर इवेंट्स के JSON को स्ट्रॉन्ग टाइप इवेंट पैरामीटर्स में बदलना, सर्वरलेस फंक्शन सिग्नेचर को सरल बनाना
  • SignalR रियल-टाइम कम्युनिकेशन: सर्वर द्वारा भेजे गए JSON मैसेज (चैट, नोटिफिकेशन, कोट्स, IoT डेटा) को C# प्रकारों में बदलना, Hub मेथड्स में स्ट्रॉन्ग टाइप के रूप में उपभोग करना
  • माइक्रोसर्विसेज इंटरफेस कॉन्ट्रैक्ट: सेवाओं के बीच RPC (gRPC-Web/HTTP/WCF) JSON रिक्वेस्ट/रिस्पॉन्स उदाहरणों को C# क्लासेस में बदलना, मल्टी-टीम साझा कॉन्ट्रैक्ट परिभाषाओं के रूप में उपयोग करना
  • कॉन्फ़िगरेशन फ़ाइल लोडिंग: appsettings.json सबस्ट्रक्चर को Options टेम्पलेट क्लासेस में बदलना (जैसे MyOptions : IOptions<MyOptions> IConfiguration.Bind के साथ)
  • टेस्ट डेटा तैयारी: JSON फिक्स्चर को C# क्लासेस में बदलना, फिर Newtonsoft/System.Text.Json से डिसीरियलाइज़ करके यूनिट टेस्ट ड्राइवर के रूप में उपयोग करना, xUnit/NUnit/MSTest के साथ उपयोग करना
  • क्रॉलर डेटा पार्सिंग: HtmlAgilityPack/AngleSharp/PuppeteerSharp द्वारा एकत्र किए गए JSON डेटा को C# क्लासेस में बदलना, JObject डायनेमिक एक्सेस में फ़ील्ड मिस होने से बचना
  • API डॉक्यूमेंटेशन लेखन: Swagger/OpenAPI डॉक्यूमेंटेशन, ReDoc, Knife4j, Swagger UI में C# क्लास उदाहरणों को schema परिभाषाओं में शामिल करना ताकि डॉक्यूमेंटेशन की पठनीयता बढ़े
  • कोड रिव्यू सहयोग: API रिस्पॉन्स JSON को सीधे पढ़ने योग्य POCO में बदलना, Code Review के दौरान फ़ील्ड नामकरण, प्रकार चयन, एनोटेशन उपयोग पर चर्चा करना आसान बनाना
  • पुराने प्रोजेक्ट रिफैक्टरिंग: JObject/Dictionary<string, object> आधारित डायनेमिक एक्सेस को POCO आधारित स्ट्रॉन्ग टाइप एक्सेस में रिफैक्टर करना, कंपाइल-टाइम टाइप चेक और मेंटेनबिलिटी बढ़ाना
  • शिक्षा और प्रशिक्षण: C# कोर्स, .NET परिचय प्रशिक्षण में उदाहरण JSON को POCO में बदलकर ऑब्जेक्ट-ओरिएंटेड मॉडलिंग, प्रॉपर्टी एक्सेसर्स, सीरियलाइज़ेशन सिद्धांतों का प्रदर्शन करना

उपयोग कैसे करें

  1. बाईं एडिटर में JSON कंटेंट पेस्ट करें, या अपलोड बटन पर क्लिक करके .json/.txt फ़ाइल चुनें, या उदाहरण बटन पर क्लिक करके बिल्ट-इन डेटा लोड करें
  2. स्वचालित रूपांतरण के लिए 400ms प्रतीक्षा करें, दाईं ओर जनरेट किया गया C# POCO क्लास कोड दिखाई देगा
  3. यदि JSON फ़ॉर्मेट एरर हैं, तो «JSON ठीक करें» बटन पर क्लिक करके सामान्य सिंटैक्स समस्याओं को स्वचालित रूप से ठीक करने के बाद फिर से रूपांतरित कर सकते हैं
  4. «कॉपी» बटन पर क्लिक करके एक क्लास को क्लिपबोर्ड पर कॉपी करके Visual Studio/Rider/VS Code में पेस्ट करें, या «डाउनलोड» पर क्लिक करके .cs फ़ाइल के रूप में सेव करें

विशेषताएं

  • शुद्ध ब्राउज़र लोकल जनरेशन: JSON पार्सिंग और C# कोड जनरेशन पूरी तरह से JavaScript + quicktype-core के माध्यम से ब्राउज़र में होती है, इनपुट डेटा किसी भी सर्वर पर अपलोड नहीं होता
  • POCO + record दो रूप: डिफ़ॉल्ट रूप से सीरियलाइज़ेबल POCO क्लासेस जनरेट करता है, एक क्लिक में C# 9+ record प्रकार पर स्विच करें, आधुनिक .NET कोडिंग शैली के अनुरूप
  • Newtonsoft [JsonProperty] एनोटेशन: प्रत्येक फ़ील्ड के लिए स्वचालित रूप से [JsonProperty("मूल कुंजी")] जोड़ता है, Newtonsoft.Json डिफ़ॉल्ट व्यवहार के साथ संगत, PascalCase फ़ील्ड नाम डिसीरियलाइज़ेशन को प्रभावित नहीं करते
  • नेस्टेड ऑब्जेक्ट्स का स्वचालित विभाजन: JSON नेस्टेड ऑब्जेक्ट्स रिकर्सिव रूप से स्वतंत्र C# क्लासेस जनरेट करती हैं, फ़ील्ड नाम के पहले अक्षर को बड़ा करने के नियम के अनुसार नामकरण (जैसे address → Address), टाइप टकराव से बचें
  • List जेनेरिक का स्वचालित विस्तार: JSON ऐरे स्वचालित रूप से List<T> में बदल जाते हैं, T का स्वचालित अनुमान ऐरे के पहले एलिमेंट से लगाया जाता है (["a","b"] → List<string>, [{...}] → List<Item>)
  • Nullable<T> का स्वचालित अनुमान: JSON में null मान वाले फ़ील्ड स्वचालित रूप से Nullable<T> के रूप में चिह्नित होते हैं (जैसे long? / string? / bool?), कंपाइल समय पर null रेफरेंस अपवादों को रोकें
  • PascalCase फ़ील्ड नामकरण: snake_case इनपुट स्वचालित रूप से PascalCase में बदल जाता है (जैसे user_name → UserName), साथ ही [JsonProperty] एनोटेशन मूल कुंजी को बनाए रखता है ताकि डिसीरियलाइज़ेशन संगतता सुनिश्चित हो
  • समृद्ध वैल्यू टाइप मैपिंग: string→string, integer→long, float→double, bool→bool, array→List<T>, null→Nullable<T>
  • पूर्ण .cs टेम्पलेट: स्वचालित रूप से using System.Collections.Generic; + namespace + public class + फ़ील्ड्स + प्रॉपर्टीज़ वाली मानक C# फ़ाइल जनरेट करता है, सीधे कंपाइल की जा सकती है
  • कॉपी और डाउनलोड: एक क्लिक में एक क्लास को क्लिपबोर्ड पर कॉपी करें या .cs फ़ाइल के रूप में डाउनलोड करें, सीधे Visual Studio / Rider / VS Code में ड्रैग और ड्रॉप करके उपयोग करें
  • JSON एरर एक क्लिक में ठीक करें: पीछे के अल्पविराम, सिंगल कोट्स, गुम कोट्स जैसी सामान्य फ़ॉर्मेटिंग एरर्स को स्वचालित रूप से ठीक करें, सफलतापूर्वक ठीक करने के बाद C# कोड जनरेशन जारी रखें
  • लोकल हिस्ट्री: localStorage के आधार पर हाल के इनपुट को स्वचालित रूप से सहेजता है, पेज रिफ्रेश या गलती से बंद होने के बाद जल्दी से रीस्टोर करके संपादन जारी रख सकते हैं

कोड उदाहरण

C#: Newtonsoft.Json के साथ इस टूल द्वारा जनरेट किए गए POCO को डिसीरियलाइज़ करना

csharp

ASP.NET Core प्रोजेक्ट्स में सबसे सामान्य उपयोग: API रिस्पॉन्स को डिसीरियलाइज़ करने के लिए इस टूल द्वारा जनरेट किए गए POCO को Newtonsoft.Json के साथ उपयोग करना।

using Newtonsoft.Json;
using System;
using System.Net.Http;
using System.Threading.Tasks;

public class ApiClient
{
    private static readonly HttpClient _http = new HttpClient();

    // इस टूल द्वारा जनरेट किया गया POCO:
    public class User
    {
        [JsonProperty("id")]
        public long Id { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("email")]
        public string Email { get; set; }

        [JsonProperty("is_active")]
        public bool? IsActive { get; set; }
    }

    public static async Task<User> GetUserAsync(int userId)
    {
        // 1) API को कॉल करके JSON स्ट्रिंग प्राप्त करें
        var json = await _http.GetStringAsync($"https://api.example.com/users/{userId}");

        // 2) इस टूल द्वारा जनरेट किए गए POCO में डिसीरियलाइज़ करें
        //    आंतरिक रूप से [JsonProperty("id")] जैसे एनोटेशन के अनुसार snake_case JSON स्वचालित रूप से मैप होगा
        var user = JsonConvert.DeserializeObject<User>(json);

        Console.WriteLine($"User: {user.Name} ({user.Email})");
        return user;
    }
}

C#: रिक्वेस्ट प्राप्त करने के लिए ASP.NET Core Controller में इस टूल द्वारा जनरेट किए गए POCO का उपयोग करना

csharp

इस टूल द्वारा जनरेट किए गए User POCO को ASP.NET Core Controller में रखें, [FromBody] के साथ फ्रंटएंड से JSON रिक्वेस्ट स्वचालित रूप से प्राप्त करें।

using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;

// इस टूल द्वारा जनरेट किया गया POCO (डिफ़ॉल्ट रूप से Newtonsoft [JsonProperty] का उपयोग करता है):
public class CreateOrderRequest
{
    [Newtonsoft.Json.JsonProperty("user_id")]
    public long UserId { get; set; }

    [Newtonsoft.Json.JsonProperty("items")]
    public List<OrderItem> Items { get; set; }
}

public class OrderItem
{
    [Newtonsoft.Json.JsonProperty("product_id")]
    public long ProductId { get; set; }

    [Newtonsoft.Json.JsonProperty("quantity")]
    public long Quantity { get; set; }
}

[ApiController]
[Route("api/[controller]")]
public class OrdersController : ControllerBase
{
    [HttpPost]
    public IActionResult Create([FromBody] CreateOrderRequest request)
    {
        if (request == null || request.Items == null || !request.Items.Any())
        {
            return BadRequest("Items cannot be empty");
        }

        // व्यावसायिक तर्क: ऑर्डर सहेजना
        // var order = OrderService.Create(request);

        return Ok(new { order_id = 12345, status = "created" });
    }
}

/*
 * संबंधित .csproj डिपेंडेंसी:
 * <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.0" />
 * <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
 */

C#: HttpClient.GetFromJsonAsync + System.Text.Json डिसीरियलाइज़ेशन

csharp

.NET 5+/.NET 7+ के लिए अनुशंसित उपयोग: System.Text.Json बिल्ट-इन एक्सटेंशन मेथड + record प्रकार का उपयोग, [JsonPropertyName] एनोटेशन के साथ।

using System.Net.Http.Json;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

// टूल डिफ़ॉल्ट रूप से POCO class जनरेट करता है; मैन्युअल रूप से record प्रकार (अपरिवर्तनीय डेटा ट्रांसफर ऑब्जेक्ट) में निम्नानुसार बदला जा सकता है:
public record User
{
    [JsonPropertyName("id")]
    public long Id { get; init; }

    [JsonPropertyName("name")]
    public string Name { get; init; }

    [JsonPropertyName("email")]
    public string Email { get; init; }

    [JsonPropertyName("is_active")]
    public bool? IsActive { get; init; }
}

public class ApiClient
{
    private static readonly HttpClient _http = new HttpClient();

    public static async Task<User> GetUserAsync(int userId)
    {
        // System.Text.Json: GetFromJsonAsync HTTP + डिसीरियलाइज़ेशन को एक पंक्ति में पूरा करता है
        var user = await _http.GetFromJsonAsync<User>(
            $"https://api.example.com/users/{userId}");

        System.Console.WriteLine($"User: {user.Name} ({user.Email})");
        return user;
    }
}

/*
 * संबंधित .csproj डिपेंडेंसी (System.Text.Json बिल्ट-इन है, अतिरिक्त इंस्टॉलेशन की आवश्यकता नहीं):
 * <TargetFramework>net7.0</TargetFramework>
 *
 * यदि प्रोजेक्ट .NET 7+ है और [JsonProperty] Newtonsoft सिंटैक्स के साथ संगतता चाहिए,
 * तो Program.cs में निम्नलिखित जोड़ सकते हैं:
 *   builder.Services.AddControllers()
 *       .AddNewtonsoftJson(options =>
 *       {
 *           options.SerializerSettings.ContractResolver =
 *               new Newtonsoft.Json.Serialization.DefaultContractResolver();
 *       });
 */

Best Practices

.csproj में <Nullable>enable</Nullable> जोड़ें, इस टूल द्वारा जनरेट किए गए string? / List<User>? जैसे null हो सकने वाले प्रकार स्वचालित रूप से कंपाइल-टाइम null जांच प्राप्त करेंगे, NullReferenceException रनटाइम क्रैश को रोकेंगे।

यह टूल स्वचालित रूप से JSON फ़ील्ड्स को PascalCase में बदलता है (जैसे user_name → UserName), साथ ही [JsonProperty] एनोटेशन मूल कुंजी को बनाए रखता है, यह सुनिश्चित करता है कि कोड .NET आधिकारिक नामकरण मानदंडों का अनुपालन करता है, डिसीरियलाइज़ेशन अभी भी मूल JSON कुंजी के साथ काम करता है।

जब नेस्टिंग स्तर 4 स्तरों से अधिक हो जाता है, तो रूट ऑब्जेक्ट को कई स्वतंत्र POCO में विभाजित करने की सिफारिश की जाती है, प्रत्येक अलग-अलग व्यावसायिक क्षेत्रों (जैसे UserDto / OrderDto / PaymentDto) के लिए जिम्मेदार होता है, एक विशाल क्लास में सभी फ़ील्ड्स होने से बचें, मेंटेनबिलिटी बढ़ाएं।

इस टूल द्वारा जनरेट किए गए POCO को EF Core Entity और API DTO दोनों के रूप में उपयोग न करें। अनुशंसा: ①API परत DTO का उपयोग करती है (JSON से जनरेट किया गया); ②EF Core परत Entity का उपयोग करती है ([Key]/[Required] जैसे डेटा एनोटेशन मैन्युअल रूप से जोड़े जाते हैं); ③DTO ↔ Entity मैपिंग करने के लिए AutoMapper/Mapster का उपयोग करें, डेटाबेस स्ट्रक्चर को फ्रंटएंड पर सीधे उजागर करने से बचें।

यदि प्रोजेक्ट System.Text.Json का उपयोग करता है, तो IDE में बल्क रिप्लेस का उपयोग करके जनरेट किए गए [JsonProperty("xxx")] को [JsonPropertyName("xxx")] में बदलने की सिफारिश की जाती है। या मूल [JsonProperty] को बनाए रखें + Microsoft.AspNetCore.Mvc.NewtonsoftJson पैकेज इंस्टॉल करें और Newtonsoft सिंटैक्स के साथ संगत होने के लिए AddNewtonsoftJson() कॉल करें।

इस टूल की सभी गणनाएं ब्राउज़र में लोकल रूप से पूरी होती हैं, लेकिन उद्यम के भीतर रक्षा की एक अतिरिक्त परत जोड़ने की सिफारिश की जाती है: ①प्रोडक्शन डेटाबेस कनेक्शन स्ट्रिंग/API मास्टर कुंजियों वाले JSON को किसी भी ऑनलाइन टूल में कॉपी न करें; ②आंतरिक POCO जनरेशन के लिए NSwag या Visual Studio JSON को क्लासेस के रूप में पेस्ट करें का उपयोग करके पूरी तरह से ऑफ़लाइन जनरेट करने की सिफारिश की जाती है; ③ऑनलाइन टूल का उपयोग केवल मास्किंग के बाद नमूना JSON के लिए करें।

1MB से अधिक JSON ब्राउज़र में धीमे प्रदर्शित होंगे, अनुशंसा: ①कई स्वतंत्र POCO क्लासेस (जैसे User.cs / Address.cs / Order.cs) में विभाजित करें, व्यावसायिक मॉड्यूल के अनुसार वर्गीकृत करें; ②बहुत बड़े JSON स्कीमा (100+ फ़ील्ड्स) के लिए NSwag या Visual Studio की बिल्ट-इन फीचर का उपयोग करके सीधे जनरेट करने की सिफारिश की जाती है; ③इस टूल का उपयोग केवल छोटे और मध्यम आकार के API रिस्पॉन्स (<100 फ़ील्ड्स) प्रोसेस करने के लिए करें।

संशोधित करने की आवश्यकता नहीं वाले DTO/रिस्पॉन्स मॉडल के लिए, जनरेट की गई class को C# 9+ record में बदलने और { get; set; } को { get; init; } में बदलने की सिफारिश की जाती है, लाभों में शामिल हैं: ①कंपाइल समय पर यह सुनिश्चित करना कि डेटा संशोधित नहीं होगा; ②स्वचालित रूप से वैल्यू इक्वलिटी तुलना (Equals/GetHashCode) प्राप्त करना; ③with एक्सप्रेशन के साथ ऑब्जेक्ट कॉपी को सरल बनाना।

सामान्य प्रश्न

JSON को C# क्लासेस में कैसे बदलें?

बाईं इनपुट बॉक्स में JSON कंटेंट पेस्ट करें, टूल 400ms के भीतर स्वचालित रूप से quicktype-core को कॉल करके C# क्लासेस जनरेट कर देगा, दाईं ओर पूरा कोड दिखाई देगा। आप .json/.txt फ़ाइल चुनने के लिए «अपलोड» बटन पर क्लिक कर सकते हैं, या बिल्ट-इन डेटा लोड करने के लिए «उदाहरण» पर क्लिक कर सकते हैं। जनरेट करने के बाद «कॉपी» बटन पर क्लिक करके एक क्लास को क्लिपबोर्ड पर कॉपी करें या .cs फ़ाइल के रूप में डाउनलोड करें।

क्या जनरेट किया गया C# कोड [JsonProperty] एनोटेशन शामिल करेगा?

हाँ। टूल डिफ़ॉल्ट रूप से Newtonsoft.Json संगतता मोड का उपयोग करता है, प्रत्येक फ़ील्ड के लिए स्वचालित रूप से [JsonProperty("मूल कुंजी")] एट्रिब्यूट जोड़ता है, यह सुनिश्चित करता है कि फ़ील्ड नाम PascalCase में बदलने के बाद भी डिसीरियलाइज़ेशन मूल JSON कुंजी से सही ढंग से मैप हो सके। यदि System.Text.Json का उपयोग कर रहे हैं, तो जनरेट करने के बाद [JsonProperty] को [JsonPropertyName] में बदल सकते हैं (दोनों का समान अर्थ है), या सीधे System.Text.Json डिफ़ॉल्ट नामकरण नीति का उपयोग कर सकते हैं ([JsonPropertyName] System.Text.Json में कस्टम JsonNamingPolicy के माध्यम से भी प्रोसेस किया जा सकता है)।

POCO क्लासेस या record प्रकार जनरेट करना चाहिए?

डिफ़ॉल्ट रूप से सीरियलाइज़ेबल POCO क्लासेस जनरेट होती हैं (जिनमें { get; set; } प्रॉपर्टीज़ होती हैं)। यदि प्रोजेक्ट C# 9+ record प्रकार का उपयोग करता है (अपरिवर्तनीय डेटा ट्रांसफर ऑब्जेक्ट्स, DTO/अपरिवर्तनीय मॉडल के लिए उपयुक्त), तो जनरेट करने के बाद मैन्युअल रूप से class को record में बदल सकते हैं और { get; set; } को init-only प्रॉपर्टीज़ में बदल सकते हैं (public string Name { get; init; })। record प्रकार का व्यापक रूप से ASP.NET Core 7+ Minimal API, Entity Framework Core में उपयोग होता है।

कौन से JSON डेटा स्ट्रक्चर सपोर्टेड हैं?

सभी वैध JSON स्ट्रक्चर सपोर्टेड हैं: बुनियादी प्रकार (null, boolean, number, string), ऐरे (एक-आयामी या बहु-आयामी), नेस्टेड ऑब्जेक्ट्स (किसी भी गहराई तक)। रूट इनपुट JSON ऑब्जेक्ट या JSON ऐरे हो सकता है, JSON ऑब्जेक्ट public class Root जनरेट करेगा, JSON ऐरे public class Root : List<Item> जनरेट करेगा। JavaScript नेटिव वैल्यूज़ (फ़ंक्शन, Symbol, undefined, Date ऑब्जेक्ट्स आदि) सपोर्टेड नहीं हैं।

JSON फ़ील्ड प्रकार C# प्रकारों से कैसे मैप होते हैं?

स्ट्रिंग→string, पूर्णांक→long, फ़्लोटिंग पॉइंट→double, बूलियन→bool, ऐरे→List<T>, नेस्टेड ऑब्जेक्ट→स्वतंत्र क्लास, null मान फ़ील्ड→Nullable<T> (जैसे long? / bool? / string?)। विस्तृत मैपिंग नियमों के लिए पेज के नीचे «JSON प्रकार से C# प्रकार मैपिंग क्विक रेफरेंस टेबल» देखें।

क्या null फ़ील्ड स्वचालित रूप से Nullable<T> जनरेट करते हैं?

हाँ। टूल JSON में स्पष्ट रूप से null या अनुपस्थित फ़ील्ड्स का पता लगाता है, स्वचालित रूप से Nullable<T> फ़ॉर्मेट जनरेट करता है (जैसे long? Id { get; set; }), जो C# 8+ में पेश की गई Nullable Reference Types (NRT) सुविधा के अनुरूप है, कंपाइलर को स्टैटिक विश्लेषण के दौरान null रेफरेंस जोखिमों का पता लगाने में मदद करता है। नोट: NRT इनेबल करने के बाद रेफरेंस प्रकार डिफ़ॉल्ट रूप से null नहीं हो सकते, null हो सकता है यह इंगित करने के लिए स्पष्ट रूप से string? से चिह्नित करना आवश्यक है।

क्या ऐरे List<T> में बदल जाते हैं?

हाँ। JSON ऐरे C# में समान रूप से List<T> में बदल जाते हैं, एलिमेंट प्रकार का स्वचालित अनुमान ऐरे के पहले एलिमेंट से लगाया जाता है: स्ट्रिंग ऐरे→List<string>, पूर्णांक ऐरे→List<long>, ऑब्जेक्ट ऐरे→List<Item>। खाली ऐरे [] एलिमेंट प्रकार का अनुमान नहीं लगा सकता, डिफ़ॉल्ट रूप से List<object> जनरेट करता है, जनरेट करने के बाद मैन्युअल रूप से विशिष्ट प्रकार (जैसे List<MyClass>) में बदलने की सिफारिश की जाती है। यदि T[] ऐरे सिंटैक्स पसंद करते हैं, तो जनरेट करने के बाद IDE में बल्क रिप्लेस का उपयोग करके बदल सकते हैं।

नेस्टेड ऑब्जेक्ट्स को कैसे प्रोसेस किया जाता है?

टूल प्रत्येक नेस्टेड ऑब्जेक्ट के लिए एक स्वतंत्र C# क्लास जनरेट करता है, नामकरण नियम फ़ील्ड नाम के पहले अक्षर को बड़ा करना है (जैसे address → Address)। यदि रूट ऑब्जेक्ट में items ऐरे है और एलिमेंट्स ऑब्जेक्ट्स हैं, तो public class Item क्लास जनरेट होगी, फिर public List<Item> Items { get; set; } के साथ रेफरेंस दी जाएगी। समान स्ट्रक्चर वाले ऑब्जेक्ट्स समान प्रकार का पुन: उपयोग करेंगे ताकि डुप्लिकेट परिभाषाएं avoid हों।

क्या जनरेट किए गए क्लास नेम और नेमस्पेस को कस्टमाइज़ कर सकते हैं?

हाँ। quicktype-core डिफ़ॉल्ट रूप से JSON सोर्स नाम (जैसे Root) को रूट क्लास नाम के रूप में उपयोग करता है, जनरेट करने के बाद मैन्युअल रूप से क्लास नेम, namespace और सभी रेफरेंस पोजीशन को बदल सकते हैं। डाउनलोड की गई .cs फ़ाइल का नाम भी सेव करते समय आवश्यकतानुसार बदला जा सकता है (जैसे User.cs, Order.cs में बदलें)।

क्या जनरेट किए गए कोड को सीधे .NET प्रोजेक्ट में डालकर उपयोग कर सकते हैं?

सीधे उपयोग कर सकते हैं। जनरेट की गई फ़ाइल मानक C# सिंटैक्स है, using System.Collections.Generic. रेफरेंस शामिल है, बस .cs फ़ाइल को .NET प्रोजेक्ट के रूट डायरेक्टरी या सबडायरेक्टरी में रखें, .csproj में अतिरिक्त डिपेंडेंसी जोड़ने की आवश्यकता नहीं है (System.Text.Json .NET में बिल्ट-इन है; Newtonsoft.Json के लिए NuGet के माध्यम से Microsoft.AspNetCore.Mvc.NewtonsoftJson या Newtonsoft.Json पैकेज इंस्टॉल करना आवश्यक है)। फिर JsonConvert.DeserializeObject<T>(jsonString) या JsonSerializer.Deserialize<T>(jsonString) का उपयोग करके डिसीरियलाइज़ कर सकते हैं।

क्या डेटा सर्वर पर अपलोड होता है?

पूरी तरह से ब्राउज़र में लोकल रूप से निष्पादित होता है। JSON पार्सिंग, C# कोड जनरेशन और फ़ाइल डाउनलोड पूरी तरह से JavaScript + WebAssembly के माध्यम से ब्राउज़र में पूरी होती है, इनपुट किया गया JSON डेटा और जनरेट किया गया C# कोड किसी भी सर्वर पर अपलोड नहीं होता, क्लाउड में रिकॉर्ड या कैश नहीं होता। API कुंजियाँ, टोकन, अप्रकाशित व्यावसायिक फ़ील्ड वाले संवेदनशील JSON भी सुरक्षित रूप से उपयोग कर सकते हैं, पेज बंद करने पर डिलीट हो जाते हैं।

क्या रजिस्ट्रेशन या लॉगिन आवश्यक है?

आवश्यक नहीं। टूल पूरी तरह से मुफ्त है, रजिस्ट्रेशन, लॉगिन, प्राधिकरण की आवश्यकता नहीं है, पेज खोलते ही तुरंत उपयोग कर सकते हैं, सभी फीचर्स ब्राउज़र में लोकल रूप से प्रदान किए जाते हैं।

JSON फ़ॉर्मेट एरर होने पर क्या करें?

टूल स्वचालित रूप से JSON वैधता का पता लगाता है, एरर होने पर दाईं ओर लाल एरर मैसेज दिखाई देता है और «JSON ठीक करें» बटन प्रदान करता है, क्लिक करके सामान्य एरर्स को स्वचालित रूप से ठीक कर सकते हैं: पीछे के अल्पविराम, सिंगल कोट्स को डबल कोट्स में बदलना, बिना कोट्स वाली कुंजियों के लिए कोट्स जोड़ना, कमेंट्स हटाना आदि। सफलतापूर्वक ठीक करने के बाद C# कोड जनरेशन जारी रहेगी।

Newtonsoft.Json और System.Text.Json में से कौन बेहतर है?

दोनों .NET इकोसिस्टम में सबसे मुख्य JSON लाइब्रेरी हैं। Newtonsoft.Json (Json.NET के नाम से भी जाना जाता है) का इतिहास सबसे लंबा है और इकोसिस्टम सबसे समृद्ध है, लगभग सभी .NET प्रोजेक्ट्स के साथ संगत है; System.Text.Json .NET Core 3.0+ में बिल्ट-इन उच्च-प्रदर्शन लाइब्रेरी है, स्टार्टअप तेज़ है, मेमोरी उपयोग कम है, AOT फ्रेंडली है। ASP.NET Core 3.0+ डिफ़ॉल्ट रूप से System.Text.Json का उपयोग करता है; पुराने .NET Framework प्रोजेक्ट्स और कई थर्ड-पार्टी लाइब्रेरीज़ डिफ़ॉल्ट रूप से Newtonsoft.Json पर निर्भर हैं। यह टूल डिफ़ॉल्ट रूप से दोनों के साथ संगत होने के लिए [JsonProperty] जनरेट करता है (System.Text.Json .NET 7+ में Newtonsoft संगतता पैकेज Microsoft.AspNetCore.Mvc.NewtonsoftJson को भी सपोर्ट करता है)।

JSON से Java, JSON से Rust से क्या अंतर है?

तीनों JSON को लक्षित भाषा के प्रकार परिभाषाओं में बदलते हैं, लेकिन आउटपुट फॉर्म अलग है: JSON से C# [JsonProperty] एनोटेशन वाली POCO क्लासेस जनरेट करता है, सीधे Newtonsoft.Json या System.Text.Json के साथ डिसीरियलाइज़ेशन के लिए उपयोग की जा सकती है; JSON से Java Lombok/Gson/Jackson एनोटेशन वाले POJO जनरेट करता है; JSON से Rust Serde derive वाले struct जनरेट करता है। तीनों अलग-अलग इकोसिस्टम पर केंद्रित हैं, चुनाव तकनीकी स्टैक पर निर्भर करता है।

DateTime फ़ील्ड वाली क्लास का डिसीरियलाइज़ेशन विफल हो जाए तो क्या करें?

System.Text.Json डिफ़ॉल्ट रूप से string और DateTime के बीच स्वचालित रूपांतरण का समर्थन नहीं करता, JsonException थ्रो करता है। दो समाधान: ①फ़ील्ड में कस्टम कनवर्टर [JsonConverter(typeof(DateTimeConverter))] जोड़ना; ②Program.cs में ग्लोबल JsonSerializerOptions सेट करना: options.PropertyNameCaseInsensitive = true; और DateTime को प्रोसेस करने के लिए कस्टम JsonConverter का उपयोग करना। Newtonsoft.Json डिफ़ॉल्ट रूप से DateTime डिसीरियलाइज़ेशन का समर्थन करता है, लेकिन विशेष फ़ॉर्मेट (जैसे Unix टाइमस्टैम्प) के लिए कस्टम converter आवश्यक है।

जनरेट की गई क्लासेस में namespace क्यों नहीं है?

टूल डिफ़ॉल्ट रूप से namespace जनरेट नहीं करता है ताकि कोड स्निपेट्स की अधिकतम संगतता बनी रहे, उपयोगकर्ताओं को किसी भी प्रोजेक्ट में कॉपी करके उपयोग करना आसान हो। यदि namespace की आवश्यकता है, तो जनरेट किए गए कोड के शीर्ष पर मैन्युअल रूप से namespace YourApp.Models; जोड़ सकते हैं और क्लासेस को संबंधित .cs फ़ाइल में रख सकते हैं। .NET प्रोजेक्ट्स में फंक्शनल मॉड्यूल के अनुसार namespace व्यवस्थित करने की सिफारिश की जाती है (जैसे Models / Dtos / ViewModels / Entities)।

क्या Visual Studio में एक क्लिक में क्लासेस के रूप में पेस्ट कर सकते हैं?

Visual Studio 2019+ में बिल्ट-इन «विशेष पेस्ट करें → JSON को क्लासेस के रूप में पेस्ट करें» फीचर है (संपादन मेनू → विशेष पेस्ट करें में), जो सीधे JSON को C# क्लासेस में बदल सकता है। इस टूल द्वारा जनरेट किया गया कोड इस फीचर के साथ संगत है: इस टूल द्वारा जनरेट किए गए C# कोड को क्लिपबोर्ड पर कॉपी करने के बाद किसी भी .cs फ़ाइल में पेस्ट करके उपयोग कर सकते हैं। यदि VS की बिल्ट-इन फीचर पसंद है, तो इस टूल को खोले बिना सीधे संपादन → विशेष पेस्ट करें → JSON को क्लासेस के रूप में पेस्ट करें का उपयोग कर सकते हैं।

समस्या निवारण

«कृपया JSON डेटा दर्ज करें» दिखाई देता है या दाईं ओर खाली है

बाईं इनपुट बॉक्स खाली है या केवल व्हाइटस्पेस कैरेक्टर हैं, कृपया सुनिश्चित करें कि वैध JSON कंटेंट पेस्ट किया गया है, या अपलोड बटन पर क्लिक करके .json/.txt फ़ाइल चुनें, या उदाहरण बटन पर क्लिक करके बिल्ट-इन उदाहरण लोड करें।

JSON पार्सिंग विफल दिखाई देता है

सामान्य कारण: पीछे के अल्पविराम (जैसे {"a":1,}), डबल कोट्स के बजाय सिंगल कोट्स का उपयोग, कुंजियाँ डबल कोट्स में नहीं हैं, JavaScript कमेंट्स शामिल हैं। «JSON ठीक करें» बटन पर क्लिक करके कुछ एरर्स को स्वचालित रूप से ठीक कर सकते हैं; यदि अभी भी विफल रहता है तो कृपया पहले JSON फ़ॉर्मेटर टूल से सत्यापित करें।

जनरेट किए गए फ़ील्ड प्रकार पर्याप्त सटीक नहीं हैं

टूल JSON उदाहरण के आधार पर प्रकारों का अनुमान लगाता है, उदाहरण के लिए सभी पूर्णांक long हैं, सभी स्ट्रिंग्स string हैं। यदि अधिक सटीक प्रकारों (int/decimal/Guid/DateTime) की आवश्यकता है, तो कृपया जनरेट करने के बाद फ़ील्ड प्रकारों को मैन्युअल रूप से बदलें। System.Text.Json डिफ़ॉल्ट रूप से DateTime का समर्थन नहीं करता, [JsonConverter] के माध्यम से कस्टमाइज़ करना आवश्यक है।

null फ़ील्ड Nullable<T> जनरेट करते हैं लेकिन प्रोजेक्ट में Nullable Reference Types सक्षम नहीं है

टूल डिफ़ॉल्ट रूप से C# 8+ Nullable Reference Types फ़ॉर्मेट में जनरेट करता है (जैसे string? / List<User>?)। यदि प्रोजेक्ट पुराने संस्करण का .NET Framework है/NRT सक्षम नहीं है, तो रेफरेंस प्रकार डिफ़ॉल्ट रूप से null हो सकते हैं, string? के ? को सीधे हटा सकते हैं (या .csproj में <Nullable>enable</Nullable> सक्षम कर सकते हैं)।

कंपाइल करते समय Newtonsoft.Json डिपेंडेंसी नहीं मिलने का संदेश आता है

कृपया .csproj में निम्नलिखित PackageReference जोड़ें: <ItemGroup> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> </ItemGroup> फिर dotnet restore चलाएँ, NuGet स्वचालित रूप से डाउनलोड कर लेगा। यदि System.Text.Json का उपयोग कर रहे हैं तो इंस्टॉलेशन की आवश्यकता नहीं (.NET में बिल्ट-इन है)।

snake_case JSON फ़ील्ड PascalCase फ़ील्ड नामों से मेल नहीं खाते

टूल स्वचालित रूप से JSON फ़ील्ड नामों को PascalCase में बदलता है (जैसे user_name → UserName), साथ ही [JsonProperty] एनोटेशन मूल कुंजी को बनाए रखता है, Newtonsoft.Json डिसीरियलाइज़ेशन के दौरान [JsonProperty] के अनुसार मैप करेगा, मैन्युअल प्रोसेसिंग की आवश्यकता नहीं। यदि System.Text.Json डिफ़ॉल्ट नामकरण नीति का उपयोग कर रहे हैं, तो [JsonProperty] को [JsonPropertyName] में बदलना या Program.cs में CamelCase नामकरण नीति सेट करना आवश्यक है।

डाउनलोड की गई .cs फ़ाइल प्रोजेक्ट में कंपाइल एरर देती है

संभावित कारण: ①.csproj में Newtonsoft.Json/System.Text.Json डिपेंडेंसी नहीं जोड़ी गई; ②क्लास अनुपयुक्त डायरेक्टरी में रखी गई (.NET प्रोजेक्ट के रूट डायरेक्टरी या सबडायरेक्टरी में रखना और namespace से मेल खाना आवश्यक है); ③क्लास नाम प्रोजेक्ट में अन्य प्रकारों से टकरा रहा है। समाधान: डिपेंडेंसी जोड़ें, डायरेक्टरी और namespace समायोजित करें, टकराने वाली क्लास का नाम बदलें।

ASP.NET Core में JSON प्राप्त करते समय «Cannot deserialize» एरर आता है

ASP.NET Core 3.0+ डिफ़ॉल्ट रूप से System.Text.Json का उपयोग करता है, लेकिन टूल द्वारा जनरेट किया गया [JsonProperty] Newtonsoft.Json सिंटैक्स है। दो समाधान: ①.csproj में Microsoft.AspNetCore.Mvc.NewtonsoftJson पैकेज जोड़ें और Program.cs में AddNewtonsoftJson() कॉल करें; ②जनरेट किए गए सभी [JsonProperty("xxx")] को [JsonPropertyName("xxx")] (System.Text.Json सिंटैक्स) में बदलें।

ऐरे संख्यात्मक प्रकार है लेकिन List<object> जनरेट करता है

आमतौर पर जब ऐरे खाली [] होता है तो डिफ़ॉल्ट रूप से List<object> के रूप में अनुमानित होता है, कृपया मूल JSON में कम से कम एक उदाहरण एलिमेंट जोड़ें (जैसे [1,2,3]), टूल पहले एलिमेंट के आधार पर प्रकार का अनुमान लगाएगा; या जनरेट करने के बाद मैन्युअल रूप से List<object> को List<long>/List<int> में बदलें।

बहुत बड़े JSON को रूपांतरित करते समय पेज हैंग हो जाता है

JSON को अलग-अलग रूपांतरण के लिए कई स्वतंत्र मॉड्यूल में विभाजित करने या केवल मॉडलिंग के लिए आवश्यक भाग निकालने की सिफारिश की जाती है। ब्राउज़र बड़ी संख्या में नेस्टेड क्लासेस प्रदर्शित करते समय बहुत अधिक मेमोरी का उपयोग करेगा, 5MB से अधिक JSON के लिए NSwag या Visual Studio की बिल्ट-इन «JSON को क्लासेस के रूप में पेस्ट करें» फीचर का उपयोग करने की सिफारिश की जाती है।

शब्दकोश

POCO (Plain Old CLR Object)
C#/.NET में «सादे CLR ऑब्जेक्ट» का संक्षिप्त रूप, बाध्यताएं हैं: पब्लिक डिफ़ॉल्ट कंस्ट्रक्टर + private फ़ील्ड्स + पब्लिक { get; set; } प्रॉपर्टीज़ + फ्रेमवर्क निर्भरता नहीं। यह टूल जो जनरेट करता है वह मानक POCO है।
record
C# 9+ में पेश किया गया अपरिवर्तनीय डेटा ट्रांसफर ऑब्जेक्ट प्रकार, रेफरेंस इक्वलिटी के बजाय वैल्यू इक्वलिटी का उपयोग करता है। इस टूल में जनरेट करने के बाद मैन्युअल रूप से record में बदला जा सकता है, DTOs, API रिस्पॉन्स मॉडल, अपरिवर्तनीय कॉन्फ़िगरेशन जैसे परिदृश्यों के लिए उपयुक्त।
[JsonProperty]
Newtonsoft.Json का फ़ील्ड मैपिंग एट्रिब्यूट। यह टूल डिफ़ॉल्ट रूप से प्रत्येक फ़ील्ड के लिए [JsonProperty("मूल कुंजी")] जोड़ता है, यह सुनिश्चित करता है कि PascalCase फ़ील्ड नाम snake_case JSON को सही ढंग से डिसीरियलाइज़ कर सकें।
Newtonsoft.Json
Json.NET के नाम से भी जाना जाता है, .NET इकोसिस्टम में सबसे लोकप्रिय JSON लाइब्रेरी है। इसका इकोसिस्टम सबसे समृद्ध है और संगतता सबसे अच्छी है, लगभग सभी .NET प्रोजेक्ट्स द्वारा समर्थित है। ASP.NET Core 3.0 से पहले डिफ़ॉल्ट रूप से उपयोग की जाती थी, 3.0 के बाद System.Text.Json द्वारा प्रतिस्थापित की गई, लेकिन अभी भी NuGet पैकेज के माध्यम से संगत बनाई जा सकती है।
System.Text.Json
.NET Core 3.0+ में बिल्ट-इन उच्च-प्रदर्शन JSON लाइब्रेरी। स्टार्टअप तेज़, मेमोरी उपयोग कम, AOT फ्रेंडली है, इसमें [JsonPropertyName] (Newtonsoft के [JsonProperty] के अनुरूप) और कस्टम नामकरण नीति JsonNamingPolicy शामिल हैं।
Nullable<T>
C# में एक प्रकार जो इंगित करता है कि मान प्रकार null हो सकता है (जैसे long? / bool?)। यह टूल JSON में null फ़ील्ड्स को स्वचालित रूप से Nullable<T> के रूप में अनुमानित करता है ताकि कंपाइल समय पर null रेफरेंस अपवादों को रोका जा सके।
List<T>
.NET कलेक्शन फ्रेमवर्क में जेनेरिक लिस्ट प्रकार। यह टूल JSON ऐरे को स्वचालित रूप से List<T> में बदलता है, T का स्वचालित अनुमान ऐरे के पहले एलिमेंट से लगाया जाता है (जैसे ["a"] → List<string>)।
namespace
C# में क्लासेस को व्यवस्थित करने के लिए नेमस्पेस कीवर्ड, Java में package के समान। इस टूल द्वारा जनरेट किया गया कोड डिफ़ॉल्ट रूप से namespace नहीं रखता, मैन्युअल रूप से जोड़ा जा सकता है (जैसे namespace MyApp.Models)।
ASP.NET Core
Microsoft का ओपन-सोर्स क्रॉस-प्लेटफ़ॉर्म वेब फ्रेमवर्क। इस टूल द्वारा जनरेट की गई POCO क्लासेस सीधे ASP.NET Core Controller [FromBody] मॉडल बाइंडिंग, Minimal API, Blazor कंपोनेंट पैरामीटर्स जैसे परिदृश्यों में उपयोग की जा सकती हैं।
Unity
दुनिया का सबसे लोकप्रिय गेम इंजन, स्क्रिप्टिंग भाषा C# है। इस टूल द्वारा जनरेट की गई POCO क्लासेस Unity नेटवर्क API रिस्पॉन्स पार्सिंग, ScriptableObject कॉन्फ़िगरेशन डेटा मॉडलिंग के लिए उपयोग की जा सकती हैं।
Snake_case → PascalCase
फ़ील्ड नामकरण नियम रूपांतरण। snake_case नामकरण (जैसे user_name, created_at) को PascalCase नामकरण (जैसे UserName, CreatedAt) में बदलना, .NET आधिकारिक नामकरण मानदंडों का अनुपालन करना।
quicktype-core
इस टूल की मूल निर्भरता ओपन-सोर्स बहु-भाषा JSON प्रकार जनरेशन लाइब्रेरी (quicktype प्रोजेक्ट) है, जो C#, Java, TypeScript, Rust, Go, Swift आदि दस से अधिक भाषाओं का समर्थन करती है, TypeScript + WebAssembly के आधार पर ब्राउज़र में चलती है।
.NET MAUI
Microsoft का क्रॉस-प्लेटफ़ॉर्म UI फ्रेमवर्क (.NET Multi-platform App UI), C# कोड iOS/Android/Windows/macOS पर साझा किया जा सकता है। इस टूल द्वारा जनरेट किए गए POCO MAUI में XAML डेटा बाइंडिंग के लिए Model के रूप में उपयुक्त हैं।
Blazor
Microsoft का WebAssembly-आधारित SPA फ्रेमवर्क, Server और WebAssembly दो मोड हैं। इस टूल द्वारा जनरेट की गई C# क्लासेस Blazor कंपोनेंट पैरामीटर्स, स्ट्रॉन्ग टाइप API रिस्पॉन्स मॉडल के लिए उपयोग की जा सकती हैं, एकल-भाषा पूर्ण-स्टैक विकास दक्षता बढ़ाती हैं।
HttpClient.GetFromJsonAsync
.NET 5+/System.Net.Http.Json एक्सटेंशन मेथड, HTTP GET + JSON डिसीरियलाइज़ेशन को एक पंक्ति में पूरा करता है। इस टूल द्वारा जनरेट किए गए POCO के साथ उपयोग करने पर HTTP API क्लाइंट कोड को काफी सरल बना सकता है।
JsonNamingPolicy
System.Text.Json में क्लास जो JSON फ़ील्ड नामों और C# प्रॉपर्टी नामों के बीच मैपिंग नियमों को नियंत्रित करती है (जैसे CamelCase, SnakeCaseLower)। Newtonsoft.Json [JsonProperty] एनोटेशन या ContractResolver के माध्यम से कार्यान्वित होती है।
IOptions<T>
.NET Options पैटर्न का मुख्य इंटरफेस, appsettings.json सबस्ट्रक्चर को स्ट्रॉन्ग टाइप क्लासेस से बांधता है। इस टूल द्वारा जनरेट किए गए POCO IConfiguration.Bind के साथ सीधे IOptions<T> कार्यान्वयन के रूप में उपयोग किए जा सकते हैं।

JSON प्रकार से C# प्रकार मैपिंग क्विक रेफरेंस टेबल

टूल JSON मान प्रकारों के आधार पर संबंधित .NET/C# प्रकारों का स्वचालित अनुमान लगाता है:

JSON मान उदाहरणजनरेट किया गया C# प्रकारNullable फॉर्मेटविवरण
nullसंदर्भ के अनुसार अनुमानितT?null मान फ़ील्ड स्वचालित रूप से Nullable<T> के रूप में अनुमानित होते हैं (जैसे long? / bool? / string?)
true / falseboolbool?JSON बूलियन मान सीधे C# bool से मैप होते हैं
42longlong?JSON पूर्णांक डिफ़ॉल्ट रूप से long (64-बिट पूर्णांक, बड़ी संख्याओं के साथ संगत) से मैप होते हैं
3.14doubledouble?JSON फ़्लोटिंग-पॉइंट संख्याएं डिफ़ॉल्ट रूप से double (डबल-प्रिसिजन फ़्लोटिंग-पॉइंट) से मैप होती हैं
"hello"stringstring?JSON स्ट्रिंग्स C# string से मैप होती हैं
["a","b"]List<string>List<string>?स्ट्रिंग ऐरे List<string> से मैप होते हैं
[1,2,3]List<long>List<long>?पूर्णांक ऐरे List<long> से मैप होते हैं
[{...},{...}]List<Item>List<Item>?ऑब्जेक्ट ऐरे पहले पहले एलिमेंट के लिए संबंधित क्लास जनरेट करेंगे फिर List से रैप करेंगे
[]List<object>List<object>?खाली ऐरे एलिमेंट प्रकार का अनुमान नहीं लगा सकते, डिफ़ॉल्ट रूप से object में गिर जाते हैं, जनरेट करने के बाद विशिष्ट प्रकार में मैन्युअल रूप से बदलने की सिफारिश की जाती है
{...} नेस्टेड ऑब्जेक्टस्वतंत्र क्लासClassName?नेस्टेड ऑब्जेक्ट स्वतंत्र क्लास जनरेट करते हैं, फ़ील्ड नाम के पहले अक्षर को बड़ा करने के नियम के अनुसार नामकरण (address → Address)

Newtonsoft.Json और System.Text.Json एनोटेशन तुलना तालिका

.NET इकोसिस्टम में दो मुख्य JSON लाइब्रेरी के फ़ील्ड मैपिंग एट्रिब्यूट्स की तुलना। यह टूल डिफ़ॉल्ट रूप से Newtonsoft-संगत [JsonProperty] जनरेट करता है:

तुलना आइटमNewtonsoft.JsonSystem.Text.Json
फ़ील्ड मैपिंग एट्रिब्यूट[JsonProperty("user_name")][JsonPropertyName("user_name")]
डिफ़ॉल्ट नामकरण नीतिPascalCase फ़ील्ड नाम बनाए रखना (snake_case के लिए [JsonProperty] आवश्यक)मूल फ़ील्ड नाम बनाए रखना (JSON कुंजी से मिलान, डिफ़ॉल्ट CamelCase)
कस्टम नामकरण[JsonProperty] के माध्यम से प्रति-फ़ील्ड निर्दिष्ट करना[JsonPropertyName] + JsonNamingPolicy ग्लोबल सेटिंग
null मान प्रोसेसिंगNullValueHandling.Ignore / IncludeJsonIgnoreCondition.WhenWritingNull
बिल्ट-इन .NET संस्करण.NET Framework / .NET Core / .NET 5+.NET Core 3.0+ / .NET 5+
इंस्टॉलेशन विधिNuGet: Newtonsoft.Jsonबिल्ट-इन (इंस्टॉलेशन की आवश्यकता नहीं)
प्रदर्शनमध्यमउच्च (स्टार्टअप तेज़, मेमोरी उपयोग कम)
AOT समर्थनsource generator आवश्यकनेटिव समर्थन
अनुप्रयोग परिदृश्यपुराने .NET प्रोजेक्ट्स, थर्ड-पार्टी लाइब्रेरी निर्भरताएं, समृद्ध इकोसिस्टमASP.NET Core 3.0+, उच्च-प्रदर्शन परिदृश्य, .NET MAUI / Blazor

Privacy & Security

इस JSON से C# टूल के सभी ऑपरेशन पूरी तरह से आपके ब्राउज़र में लोकल रूप से पूरे होते हैं: JSON पार्सिंग, C# कोड जनरेशन और फ़ाइल डाउनलोड सभी ब्राउज़र के JavaScript + WebAssembly (quicktype-core) के माध्यम से क्लाइंट-साइड पर निष्पादित होते हैं, JSON कंटेंट, अपलोड की गई फ़ाइलें या जनरेट किया गया कोड नेटवर्क के माध्यम से किसी भी सर्वर पर नहीं भेजा जाता है। फ़ाइल अपलोड ब्राउज़र के नेटिव FileReader API का उपयोग करके सीधे मेमोरी में पढ़ता है, किसी भी मध्यस्थ सेवा से होकर नहीं गुजरता। कुकी ट्रैकिंग का उपयोग नहीं करता, उपयोगकर्ता इनपुट डेटा या उपयोग व्यवहार डेटा एकत्र नहीं करता। पेज बंद करने या रिफ्रेश करने के बाद सभी इनपुट और आउटपुट कंटेंट स्वचालित रूप से मेमोरी से हट जाते हैं। API कुंजियाँ, टोकन, संवेदनशील व्यावसायिक डेटा वाले JSON प्रोसेस करने के लिए उपयुक्त है।

Authoritative References