zoukankan      html  css  js  c++  java
  • .Net Core读取JSON配置文件

    NuGet包:

      Microsoft.Extensions.Configuration.Binder(将读取到的配置文件转换成指定类型)

      Microsoft.Extensions.Configuration

      Microsoft.Extensions.Configuration.Environment(可读取环境变量,系统变量)

      Microsoft.Extensions.Configuration.FileExtensions(查找配置文件位置)

      Microsoft.Extensions.Configuration.Json(添加 配置源文件操作)

    测试所用配置文件:

      

    {
      "classValue": {
        "firstValue": "first get config value",
        "secondValue": "second get config value"
      },
      "singleValue": "single",
      "arrayValue": [
        {
          "firstValue": "first class one",
          "secondValue": "first class two"
        },
        {
          "firstValue": "second class one",
          "secondValue": "second class two"
        }
      ]
    }

    代码:

      1. 创建ConfigurationBuilder对象

      

    public IConfigurationRoot ConfigBuild()
            {
                var config = new ConfigurationBuilder();
                //设置文件路径,配置热加载(当文件改变时,重新加载)***********************
                config.SetBasePath(Directory.GetCurrentDirectory().ToString()).Add(new JsonConfigurationSource { Path = "appSetting.json", ReloadOnChange = true });
                //不热加载
                //config.SetBasePath(Directory.GetCurrentDirectory().ToString()).AddJsonFile("appSetting.json");
                //可读取环境变量,系统变量(提供重载 prefix,会筛选出符合前缀名的环境/系统变量) ******************************
                //config.AddEnvironmentVariables();
                config.AddEnvironmentVariables("test");
                return config.Build();
            }

      2.读取配置文件

      包含了JSON中常见的键值格式。单个值,类,数组

     NetCoreReadConfig netCoreReadConfig = new NetCoreReadConfig();
                //读取类
                //ConfigTestClass testConfigValue = netCoreReadConfig.ConfigBuild().GetSection("classValue").Get<ConfigTestClass>();
                // ******************
                //var signleConfig = netCoreReadConfig.ConfigBuild()["classValue:firstValue"];
                //Console.WriteLine(testConfigValue.firstValue);
                //Console.WriteLine(testConfigValue.secondValue);
    
                //读取单个值
                var signleConfig = netCoreReadConfig.ConfigBuild()["singleValue"];
                Console.WriteLine(signleConfig);
    
                //读取环境变量、系统变量
                //Environment.SetEnvironmentVariable("codeAddOsConfig","codeAdd");
                //var osEnvironmentConfig = netCoreReadConfig.ConfigBuild().GetSection("ASPNETCORE_ENVIRONMENT").Value;
                //var osEnvironmentConfig = netCoreReadConfig.ConfigBuild().GetSection("codeAddOsConfig").Value;
                //Console.WriteLine(osEnvironmentConfig);
    
                //读取数组
                ConfigTestClass[] arrayConfig;
                arrayConfig = netCoreReadConfig.ConfigBuild().GetSection("arrayValue").Get<ConfigTestClass[]>();
                foreach (var item in arrayConfig)
                {
                    Console.WriteLine(item.firstValue);
                }
    
                Console.ReadKey();

    另外补充

      1.因为 IConfigurationRoot 继承自 IConfiguration,所以使用 GetSection("") 或 [""] 都可以

      2.系统环境变量查看:控制面板->系统高级设置 | <变量的优先等级博主未测试> | <博主尝试手动添加系统/用户变量,重启后才生效,大家如果有什么提示可以评论补充>

      

       环境变量 | <这个是立即生效的>

      

  • 相关阅读:
    【LeetCode & 剑指offer刷题】字符串题8:Implement strStr()
    【LeetCode & 剑指offer刷题】字符串题7:String to Integer (atoi)
    项目-常用文档类型
    eclipse中一个项目引用另一个项目,运行报:java.lang.NoClassDefFoundError
    eclipse下的,maven+spring+springMVC+mabatis+mysql.创建
    eclipse +maven+ssm搭建矿建
    Android 自定义Adapter 但listview 只显示第一条数据
    树-二叉循环树
    对象排序,compareTo
    线性表-双向链表(LinkedList)
  • 原文地址:https://www.cnblogs.com/lbjlbj/p/14431746.html
Copyright © 2011-2022 走看看