deezus blog

.Net Core、Typescriptを中心に技術的ノウハウを公開しています

.NETCoreでYAMLを扱う

はじめに

システムの設定ファイルなどをYAMLで記載し、ファイルを読み込みオブジェクトにデシリアライズする方法のメモです

YamlDotNet

インストール

nugetでインストールします

dotnet add package YamlDotNet

基本的な使い方

下記のようなsetting.yamlを下記のSettingクラスにパースする例です

ConnectionString: DataSource=app.db
class Setting
{
    public string ConnectionString { get; set; }
}

読み込んだYAMLのstringをデシリアライズすればOK

var yaml = File.ReadAllText("setting.yaml");
var deserializer = new DeserializerBuilder().Build();
var setting = deserializer.Deserialize<Setting>(yaml);

プロパティの一文字目を小文字にする方法

デフォルトではYAMLのプロパティとデシリアライズするクラスのプロパティが一致している必要があります

// デシリアライズできる
ConnectionString: DataSource=app.db

一般的にはYAMLの1文字目は小文字の場合が多いので下記のようにしたいのですが、デシリアライズできません

// 1文字目が小文字のためデシリアライズできない
connectionString: DataSource=app.db

デシリアライザーを作る時に下記のようにすれば、1文字目が小文字でもデシリアライズできます

var deserializer = new DeserializerBuilder().WithNamingConvention(CamelCaseNamingConvention.Instance).Build();