天天看点

198.C# Json配置文件

作者:数字双碳王亮

摘要

为了兼容,仍然可以使用Web.config,App.config 和ConfigurationManager类,但不推荐。

.NET中的配置系统支持丰富的配置源,包括文件(json、xml、ini等)、注册表、环境变量、命令行、Azure Key Vault等,还可以配置自定义配置源。可以跟踪配置的改变,可以按照优先级覆盖。

正文

Json文件配置

  • 创建一个ison文件,文件名随意,比如config.json,设置“如果较新则复制”。参考备注
  • NuGet安装Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.Json

一个例子

在项目中添加一个json文件

198.C# Json配置文件
198.C# Json配置文件

编写一下json

{
  "Email": "[email protected]",
  "Name": "admin",
  "Password": "123456",
  "SmtpServer": "[email protected]",
  "DbInfo": {
    "Uid": "sa",
    "Password": "123",
    "Ip": "127.0.0.1"
  }
}

           

读取

private void btnRead_Click(object sender, EventArgs e)
{
    ConfigurationBuilder builder = new ConfigurationBuilder();
    builder.AddJsonFile("config.json", true, true);
    IConfigurationRoot root=builder.Build();
    txtEmail.Text = root["Email"];
    txtName.Text = root["Name"];
    txtPassword.Text = root["Password"];
    txtSmtp.Text = root["SmtpServer"];
    txtUid.Text = root["DbInfo:Uid"];//多层次用:
}

           
198.C# Json配置文件

我们还可以用类映射的方式来读取

声明一个DbInfo类

public class DbInfo
{
    public string Uid { get; set; }
    public string Password { get; set; }
    public string Ip { get; set; }
}

           

安装包 Microsoft.Extensions.Configuration.Binder

var db=root.GetSection("DbInfo").Get<DbInfo>();
txtUid.Text = db.Uid;
txtDbPassword.Text = db.Password;
txtIp.Text = db.Ip;

           
198.C# Json配置文件

修改一下DbInfo类

public class DbInfo
{
    public static string Uid { get; set; }
    public static string Password { get; set; }
    public static string Ip { get; set; }

    public static List<string> Ips { get; set; }=new List<string>();
}

           

在Program中读取

ConfigurationBuilder builder = new ConfigurationBuilder();
builder.AddCommandLine(args);
IConfigurationRoot root= builder.Build();

DbInfo.Ip =root["server"];
DbInfo.Uid = root["uid"];
DbInfo.Password = root["password"];

DbInfo.Ips.Add(root["ips:0"]);
DbInfo.Ips.Add(root["ips:1"]);

           
198.C# Json配置文件

继续阅读