You Must Believe In Spring

Webエンジニアによる雑記

ASP.NET Coreでappsettings.jsonから配列形式の設定値を取得する

備忘録としてメモ。
ASP.NET CoreのWebアプリケーションでappsettings.jsonから配列形式で設定を取得したいとき。

appsettings.json

{
    "ApiServer": [
        {
            "SiteName": "authServer",
            "BaseUri": "https://xxxx.com",
            "AuthParam": "api-key-xxxx"
        },
        {
            "SiteName": "fileServer",
            "BaseUri": "https://yyyy.com",
            "AuthParam": "api-key-yyyy"
        }
    ]
}

"ApiServer"の設定を取得したいとします。
配列形式に2つの設定があり、各要素は以下のクラスにデシリアライズしたい。

public class ApiServerSetting
    {
        public string SiteName { get; set; }

        public string BaseUri { get; set; }

        public string AuthParam { get; set; }
    }

その場合は以下のように実装します。

ApiServerSetting[] setting = configuration.GetSection("ApiServer").Get<ApiServerSetting[]>();

ポイントはGet<T>のジェネリック配列などコレクション型を指定してあげることです。

イメージとしては、IConfiguration.GetSection(string key)で指定のキーの子要素を取得して、
その後のGet<T>メソッドでT型にマッピング(デシリアライズ)してあげる感じでしょうか。


従来のASP.NETのWeb.configでの運用に比べ、
設定の取得方法も色々と変わったので、少しずつ慣れていこうと思います。