简体   繁体   English

C# 如何从 appsettings.json 获取值

[英]C# how to get values from appsettings.json

I am trying to extract from appsettings.json我正在尝试从 appsettings.json 中提取

"BulkMailCodes": {
        "NcoaCorrectedCodes": {
             "A": "Full match",
            "91": "Matched despite missing secondary number",
            "92": "Matched despite extra secondary number"
        },
        "NcoaSuppressedCodes": {
            "0": "No matching address",
            "1": "New address is Outside US",
            "2": "No forwarding address",
            "3": "PO Box closed",           
        }

How can I get the key/value pairs for "BulkMailCodes":"NcoaCorrectedCodes" into a Dictionary or KeyValuePair object?如何将 "BulkMailCodes":"NcoaCorrectedCodes" 的键/值对获取到 Dictionary 或 KeyValuePair 对象中?

I have this class:我有这门课:

    class BulkMail
    {
        public static IConfigurationRoot configuration = GetConfig();
        Dictionary<string, string> ncoaCorrected, ncoaSuppressed;
        static void Main(string[] args)
        {
            BulkMail bulkMail = new BulkMail();
        }

        public BulkMail()
        {
            ncoaCorrected = configuration["BulkMailCodes: CassSuppressedCodes"];
            Console.WriteLine("NcoaCorrectedCodes: ");
            foreach (KeyValuePair<string, string> pair in ncoaCorrected)
            {
                Console.WriteLine(string.Format("{0}: {1}", pair.Key, pair.Value));
            }


        }

        public static IConfigurationRoot GetConfig()
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
            return (builder.Build());
        }
    }

Thanks!谢谢!

ncoaCorrected = configuration.GetSection("BulkMailCodes:NcoaCorrectedCodes").GetChildren()
                      .ToDictionary(x => x.Key, x => x.Value);

Console.WriteLine("NcoaCorrectedCodes: ");
foreach (KeyValuePair<string, string> pair in ncoaCorrected)
{
    Console.WriteLine(string.Format("{0}: {1}", pair.Key, pair.Value));
}

All you have to do is bind it to an object of type Dictionary.您所要做的就是将其绑定到一个类型为 Dictionary 的对象。 You will need to add a nugget package: Microsoft.Extensions.Configuration.Binder You can do it like this:你需要添加一个 nugget 包: Microsoft.Extensions.Configuration.Binder 你可以这样做:

      class BulkMail
      {
        public static IConfigurationRoot configuration = GetConfig();
        private Dictionary<string, string> ncoaCorrected = new Dictionary<string, string>();
        private Dictionary<string, string> ncoaSuppressed = new Dictionary<string, string>();
        static void Main(string[] args)
        {
          BulkMail bulkMail = new BulkMail();
        }

        public BulkMail()
        {
           configuration.GetSection("BulkMailCodes:NcoaCorrectedCodes").Bind(ncoaCorrected);
           configuration.GetSection("BulkMailCodes:NcoaSuppressedCodes").Bind(ncoaSuppressed);

          Console.WriteLine("NcoaCorrectedCodes: ");
          foreach(KeyValuePair<string, string> pair in ncoaCorrected)
          {
            Console.WriteLine(string.Format("{0}: {1}", pair.Key, pair.Value));
          }

          Console.WriteLine("NcoaSuppressedCodes: ");
          foreach(KeyValuePair<string, string> pair in ncoaSuppressed)
          {
            Console.WriteLine(string.Format("{0}: {1}", pair.Key, pair.Value));
          }

          Console.ReadLine();

        }

        public static IConfigurationRoot GetConfig()
        {
          var builder = new ConfigurationBuilder()
              .SetBasePath(Directory.GetCurrentDirectory())
              .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
          return (builder.Build());
        }
      }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM