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 पुस्तकालय में भी
OpenSSL C++: पूर्ण गाइड उदाहरणों के साथ
TypeScript में Excel के साथ काम करना: लाइब्रेरीज़, उदाहरण और उपकरण
Rust के लिए Elasticsearch क्लाइंट: elasticsearch-rs लाइब्रेरी की पूरी गाइड
C# (.NET) में GraphQL: API बनाने के लिए Hot Chocolate और GraphQL.NET लाइब्रेरीज़
HikariCP Java: पूरी गाइड, उदाहरण और सेटअप