.Net core 的配置文件,不再是配置在web.config 中,而是单独的json 配置文件,解析方法:只要和合法的Json格式,怎么写随意,怎么写就怎么解析
解析方法:
首先Nuget安装如下包:
1、Microsoft.Extensions.Configuration
2、Microsoft.Extensions.Configuration.Json:解析Json文件用的
3、Microsoft.Extensions.Configuration.Xml:解析XML文件用的
4、Microsoft.Extensions.Configuration.EnvironmentVariables:解析环境变量用的
然后using Microsoft.Extensions.Configuration;
Json文件的解析
配置文件1:appsettings.json
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"UserName": "lily"
}
配置文件2:appjson.json
{
"db": {
"type": {
"sqlserver": {
"name": "sqlserver",
"connectionString": "server=.;database=sales;uid=sa;pwd=123456;"
},
"mysql": {
"name": "mysql",
"connectionString": "server=.;database=sales;uid=root;pwd=root;"
}
}
},
"UserName": "tom",
"Ids": [ 1, 2, 3 ],
"Shopidlist": [{ "entid": 20 }, { "entid": 25 }]
}
读取以上两个配置文件中的节点值
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System.IO;
namespace CoreWebApp.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
//获取配置文件(json)的目录
string currentJsonPath = Directory.GetCurrentDirectory();
//设置配置文件所在的路径
var builder = new ConfigurationBuilder().SetBasePath(currentJsonPath);
builder.AddJsonFile("appsettings.json"); //将你的配置文件加入到builder中(添加一个json文件,即我要解析这个json文件)
builder.AddJsonFile("appjson.json");//也可以添加多个配置文件,第二个参数的值为true表示即便这个appjson.json文件不存在,也不会抛异常(此参数可选,默认为false);第三个参数的值为true表示启用这个文件的热加载,即:当这个appjson.json文件的值改变的时候马上就能被应用程序监控到,应用程序取到的值就是最新的值(可选参数,它采用watch机制实现的)
IConfiguration configRoot = builder.Build();
//读取appsettings.json配置文件下的节点值 :方式1
var includeScopesValue = configRoot.GetSection("Logging").GetSection("IncludeScopes").Value;
var logLevelValue = configRoot.GetSection("Logging").GetSection("LogLevel").GetSection("Default").Value;
var userName = configRoot["UserName"]; //特别注意点:如果appsettings.json,与appjson.json根节点都存在UserName,那么UserName的值以最后加入builder的那文件的UserName的值为准,所以这里值为"tom"
//读取appsettings.json配置文件下的节点值 :方式2
var isv = configRoot["Logging:IncludeScopes"];
var lv = configRoot["Logging:LogLevel:Default"];
//读取appjson.json配置文件下的节点值:方式1:
var sqlserverValue = configRoot.GetSection("db").GetSection("type").GetSection("sqlserver").GetSection("connectionString").Value;
var entidValue0 = configRoot.GetSection("Shopidlist").GetSection("0").GetSection("entid").Value; //获取shopidlist这个数组中,第0个元素的entid值;得到20
var entidValue1 = configRoot.GetSection("Shopidlist").GetSection("1")["entid"]; //也可以这样写:获取shopidlist这个数组中,第1个元素的entid值;得到25
//读取appjson.json配置文件下的节点值:方式2:
var sv = configRoot["db:type:sqlserver:connectionString"];
var ev = configRoot["Shopidlist:0:entid"]; //获取shopidlist这个数组中,第个元素的entid值;得到20
var un = configRoot["UserName"];//特别注意点:如果appsettings.json,与appjson.json根节点都存在UserName,那么UserName的值以最后加入builder的那文件的UserName的值为准,所以这里值为"tom
var id1 = configRoot["Ids:1"]; //获取Ids这个数组,第1个元素
//强类型读取数据(需要你自己创建类)
var mysqlName = configRoot.Get<RootNode>().db.type.mysql.name;
return View();
}
}
public class RootNode
{
public db db { get; set; }
}
public class db
{
public type type { get; set; }
}
public class type
{
public sqlserver sqlserver { get; set; }
public mysql mysql { get; set; }
}
public class sqlserver
{
public string name { get; set; }
public string connectionString { get; set; }
}
public class mysql
{
public string name { get; set; }
public string connectionString { get; set; }
}
}