YAML के साथ C# (.NET) में काम करें: YamlDotNet लाइब्रेरी

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

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

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

C# (.NET) में YAML के साथ काम करें: YamlDotNet लाइब्रेरी

YAML (YAML Ain't Markup Language) डेटा सीरियलाइज़ेशन का एक सुविधाजनक फ़ॉर्मेट है, जिसका उपयोग अक्सर कॉन्फ़िगरेशन फ़ाइलों, CI/CD पाइपलाइनों, Docker Compose और Kubernetes मैनिफ़ेस्ट के लिए किया जाता है। .NET इकोसिस्टम में YAML के साथ काम करने के लिए मुख्य लाइब्रेरी YamlDotNet है — यह एक शक्तिशाली, उच्च-प्रदर्शन वाला टूल है जो YAML 1.1 और 1.2 स्पेसिफिकेशन के साथ पूरी तरह से संगत है।

इस लेख में हम सीखेंगे: YamlDotNet कैसे इंस्टॉल करें, C# ऑब्जेक्ट्स का बेसिक सीरियलाइज़ेशन और डीसीरियलाइज़ेशन कैसे करें, कस्टम टैग कैसे सेट करें और जटिल डेटा स्ट्रक्चर को कैसे हैंडल करें।

YamlDotNet इंस्टॉल करना

यह लाइब्रेरी NuGet के माध्यम से उपलब्ध है। पैकेज मैनेजर कंसोल में यह कमांड चलाएँ:

dotnet add package YamlDotNet

या Package Manager Console से:

Install-Package YamlDotNet

बेसिक उपयोग: YAML को C# ऑब्जेक्ट में डीसीरियलाइज़ करना

मान लीजिए, हमारे पास एप्लिकेशन सेटिंग्स वाली YAML फ़ाइल config.yaml है:

app:
  name: MyApp
  version: 2.0.1
  debug: true
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 CredentialsConfig Credentials { get; set; }
}

public class CredentialsConfig
{
    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) // snake_case के लिए
    .Build();

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

Console.WriteLine(config.App.Name);        // MyApp
Console.WriteLine(config.Database.Port);   // 5432

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

उल्टा काम — C# ऑब्जेक्ट को YAML स्ट्रिंग में बदलना:

var config = new RootConfig
{
    App = new AppConfig { Name = "MyApp", Version = "2.0.1", Debug = true },
    Database = new DatabaseConfig
    {
        Host = "localhost",
        Port = 5432,
        Credentials = new CredentialsConfig { User = "admin", Password = "secret" }
    }
};

var serializer = new SerializerBuilder()
    .WithNamingConvention(CamelCaseNamingConvention.Instance) // YAML में camelCase
    .Build();

var yaml = serializer.Serialize(config);
Console.WriteLine(yaml);

परिणाम:

app:
  name: MyApp
  version: 2.0.1
  debug: true
database:
  host: localhost
  port: 5432
  credentials:
    user: admin
    password: secret

कलेक्शन और जटिल टाइप्स के साथ काम करना

YamlDotNet लिस्ट, डिक्शनरी और नेस्टेड स्ट्रक्चर को बेहतरीन तरीके से सपोर्ट करता है। लिस्ट का उदाहरण:

public class Project
{
    public string Name { get; set; }
    public List<string> Tags { get; set; }
}

// YAML:
// name: MyProject
// tags:
//   - dotnet
//   - yaml
//   - csharp

var yaml = @"
name: MyProject
tags:
  - dotnet
  - yaml
  - csharp
";

var deserializer = new DeserializerBuilder().Build();
var project = deserializer.Deserialize<Project>(yaml);

foreach (var tag in project.Tags)
    Console.WriteLine(tag);

कस्टम टैग और टाइप्स (TagMapping)

कभी-कभी YAML फ़ाइलों में स्पष्ट टैग होते हैं (जैसे !!str या !MyType)। YamlDotNet आपको टैग को विशिष्ट C# टाइप्स से मैप करने की अनुमति देता है:

pu                    

अनुशंसाएँ