C# (.NET) में YAML के साथ कार्य: लाइब्रेरीज़ और उपयोग के उदाहरण

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) में YAML के साथ कार्य: लाइब्रेरीज़ और व्यावहारिक उदाहरण



YAML (YAML Ain't Markup Language) डेटा सीरियलाइज़ेशन का एक लोकप्रिय प्रारूप है, जिसका व्यापक रूप से कॉन्फ़िगरेशन फ़ाइलों, DevOps (Ansible, Kubernetes, Docker Compose) और डेटा आदान-प्रदान के लिए उपयोग किया जाता है। .NET इकोसिस्टम में YAML के लिए कोई अंतर्निहित समर्थन नहीं है, हालांकि शक्तिशाली तृतीय-पक्ष लाइब्रेरीज़ मौजूद हैं। इस लेख में हम दो मुख्य लाइब्रेरीज़ पर विचार करेंगे: YamlDotNet (सबसे लोकप्रिय) और SharpYaml (एक हल्का विकल्प), और दिखाएंगे कि उन्हें C# प्रोजेक्ट्स में कैसे एकीकृत किया जाए।



1. JSON/XML के बजाय YAML क्यों चुनें?

  • इंडेंटेशन के साथ मानव-पठनीय सिंटैक्स (कोष्ठक और उद्धरण चिह्नों के बिना)।
  • टिप्पणियों के लिए समर्थन (# से शुरू होती हैं)।
  • जटिल संरचनाओं (सूचियाँ, शब्दकोश, बहु-पंक्ति स्ट्रिंग्स) के लिए अंतर्निहित समर्थन।
  • कंटेनरीकरण और CI/CD में कॉन्फ़िगरेशन के लिए डी-फैक्टो मानक।


2. मुख्य लाइब्रेरी: YamlDotNet

YamlDotNet .NET (जिसमें .NET Core, .NET 5+ शामिल है) के लिए सबसे परिपक्व और समर्थित लाइब्रेरी है। यह पूरा चक्र प्रदान करती है: डीसीरियलाइज़ेशन (YAML → C# ऑब्जेक्ट) और सीरियलाइज़ेशन (ऑब्जेक्ट → YAML)।



2.1 NuGet के माध्यम से स्थापना

dotnet add package YamlDotNet

या Visual Studio पैकेज मैनेजर के माध्यम से: Install-Package YamlDotNet।



2.2 बुनियादी डीसीरियलाइज़ेशन

मान लीजिए, हमारे पास एक फ़ाइल config.yaml है:

# एप्लिकेशन सेटिंग्सapp:  name: MyApp  version: 1.0.0  debug: false

database: host: localhost port: 5432 credentials: user: admin password: secret


आइए संबंधित C# क्लासेज़ बनाएँ:

public class AppConfig{    public string Name { get; set; }    public string Version { get; set; }    public bool Debug { get; set; }}

public class DatabaseConfig{ public string Host { get; set; } public int Port { get; set; } public Credentials Credentials { get; set; }}

public class Credentials{ public string User { get; set; } public string Password { get; set; }}

public class RootConfig{ public AppConfig App { get; set; } public DatabaseConfig Database { get; set; }}


अब YAML को ऑब्जेक्ट्स में पार्स करें:

using YamlDotNet.Serialization;using YamlDotNet.Serialization.NamingConventions;

var yamlContent = File.ReadAllText("config.yaml");

var deserializer = new DeserializerBuilder() .WithNamingConvention(UnderscoredNamingConvention.Instance) // अंडरस्कोर के लिए .Build();

var config = deserializer.Deserialize<RootConfig>(yamlContent);

Console.WriteLine($"App: {config.App.Name} v{config.App.Version}");Console.WriteLine($"DB host: {config.Database.Host}:{config.Database.Port}");


2.3 ऑब्जेक्ट्स का YAML में सीरियलाइज़ेशन

var serializer = new SerializerBuilder()    .WithNamingConvention(CamelCaseNamingConvention.Instance)    .Build();

var config = new RootConfig{ App = new AppConfig { Name = "TestApp", Version = "2.0.0", Debug = true }, Database = new DatabaseConfig { Host = "192.168.1.1", Port = 3306, Credentials = new Credentials { User = "root", Password = "qwerty" } }};

string yamlOutput = serializer.Serialize(config);Console.WriteLine(yamlOutput);


2.4 डायनामिक डेटा के साथ कार्य

यदि YAML संरचना पहले से ज्ञात नहीं है, तो Dictionary<object, object> का उपयोग करें:

var deserializer = new DeserializerBuilder()    .Build();

var result = deserializer.Deserialize<Dictionary<object, object>>(yamlContent);// शब्दकोश का पुनरावर्ती ट्रैवर्सलPrintYaml(result, 0);

void PrintYaml(Dictionary<object, object> dict, int indent){ foreach (var kvp in dict) { Console.WriteLine($"{new string(' ', indent * 2)}{kvp.Key}: {kvp.Value}");

अनुशंसाएँ