簡體   English   中英

如何從 .Net 6 中的 appsettings.json 文件中獲取數組?

[英]How to get an array from appsettings.json file in .Net 6?

我已經閱讀了這篇關於如何在 .Net 6 控制台應用程序中訪問appsettings.json文件的優秀 SO 帖子

但是,在我的 json 文件中,我有幾個數組:

"logFilePaths": [
    "\\\\server1\\c$\\folderA\\Logs\\file1.log",
    "\\\\server2\\c$\\folderZ\\Logs\\file1A1.log",
    "\\\\server3\\c$\\folderY\\Logs\\file122.log",
    "\\\\server4\\c$\\folderABC\\Logs\\fileAB67.log"
  ],

如果我這樣做,我會得到結果:

    var builder = new ConfigurationBuilder().AddJsonFile($"appsettings.json", true, true);
    var config = builder.Build();

    string logFile1 = config["logFilePaths:0"];
    string logFile2 = config["logFilePaths:1"];
    string logFile3 = config["logFilePaths:2"];

但是我不想將實際上是數組的內容編碼為單獨的代碼行,如圖所示。

我想做這個:

string[] logFiles = config["logFilePaths"].Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries);

但它在config["logFilePaths"]上給我一個錯誤,說它是null

為什么那會是空的?

一種選擇是安裝Microsoft.Extensions.Configuration.Binder nuget 並使用Bind (不要忘記為appsettings.json CopyToOutputDirectory

var list = new List<string>();
config.Bind("logFilePaths", list);

另一個 - 通過GetSection (使用相同的 nuget 綁定集合):

var list = config.GetSection("logFilePaths").Get<List<string>>();

要將logFilePaths作為數組訪問,您需要使用Get<T>擴展方法:

string[] logFilePaths = config.GetSection("logFilePaths").Get<string[]>();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM