1. ホーム
  2. c#

[解決済み] .net coreでappsettings.jsonからリストを抽出する方法

2022-12-04 20:25:50

質問

私は以下のようなappsettings.jsonファイルを持っています。

{
    "someSetting": {
        "subSettings": [
            "one",
            "two",
            "three"
         ]
    }
}

コンフィギュレーションルートを構築して、以下のようにすると config["someSetting:subSettings"] を実行すると null が返され、実際に利用できる設定は以下のようになります。

config["someSettings:subSettings:0"]

の内容を取得する良い方法はないでしょうか? someSettings:subSettings の内容をリストとして取得する良い方法はありますか?

どのように解決するのですか?

Configuration binder を使って、設定ソースの強い型表現を取得することができます。

これは私が以前書いたテストの例です。お役に立てれば幸いです。

    [Fact]
    public void BindList()
    {
        var input = new Dictionary<string, string>
        {
            {"StringList:0", "val0"},
            {"StringList:1", "val1"},
            {"StringList:2", "val2"},
            {"StringList:x", "valx"}
        };

        var configurationBuilder = new ConfigurationBuilder();
        configurationBuilder.AddInMemoryCollection(input);
        var config = configurationBuilder.Build();

        var list = new List<string>();
        config.GetSection("StringList").Bind(list);

        Assert.Equal(4, list.Count);

        Assert.Equal("val0", list[0]);
        Assert.Equal("val1", list[1]);
        Assert.Equal("val2", list[2]);
        Assert.Equal("valx", list[3]);
    }

重要なのは Bind .

このテストとその他のサンプルは GitHub