日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

netcore读取json文件_.net core读取json格式的配置文件

發布時間:2023/11/27 生活经验 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 netcore读取json文件_.net core读取json格式的配置文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了專門的ConfigurationManager來讀取配置文件的內容,.net core中推薦使用json格式的配置文件,那么在.net core中該如何讀取json文件呢?

1、在Startup類中讀取json配置文件

1、使用Configuration直接讀取

看下面的代碼:

public IConfiguration Configuration { get; }

Configuration屬性就是.net core中提供的用來讀取json文件。例如:

public voidConfigure(IApplicationBuilder app, IHostingEnvironment env)

{string option1 = $"option1 = {this.Configuration["Option1"]}";string option2 = $"option2 = {this.Configuration["Option2"]}";string suboption1 = $"suboption1 = {this.Configuration["subsection:suboption1"]}";//讀取數組

string name1 = $"Name={this.Configuration["student:0:Name"]}";string age1 = $"Age= {this.Configuration["student:0:Age"]}";string name2 = $"Name={this.Configuration["student:1:Name"]}";string age2 = $"Age= {this.Configuration["student:1:Age"]}";//輸出

app.Run(c => c.Response.WriteAsync(option1+"\r\n"+option2+ "\r\n"+suboption1+ "\r\n"+name1+ "\r\n"+age1+ "\r\n"+name2+ "\r\n"+age2));if(env.IsDevelopment())

{

app.UseDeveloperExceptionPage();

}else{

app.UseHsts();

}

app.UseHttpsRedirection();

app.UseMvc();

}

結果:

2、使用IOptions接口

1、定義實體類

public classMongodbHostOptions

{///

///連接字符串///

public string Connection { get; set; }///

///庫///

public string DataBase { get; set; }public string Table { get; set; }

}

2、修改json文件

在appsettings.json文件中添加MongodbHost節點:

{"Logging": {"LogLevel": {"Default": "Warning"}

},"option1": "value1_from_json","option2": 2,"subsection": {"suboption1": "subvalue1_from_json"},"student": [

{"Name": "Gandalf","Age": "1000"},

{"Name": "Harry","Age": "17"}

],"AllowedHosts": "*",//MongoDb

"MongodbHost": {"Connection": "mongodb://127.0.0.1:27017","DataBase": "TemplateDb","Table": "CDATemplateInfo"}

}

注意:

MongodbHost里面的屬性名必須要和定義的實體類里面的屬性名稱一致。

3、在StartUp類里面配置

添加OptionConfigure方法綁定

private voidOptionConfigure(IServiceCollection services)

{//MongodbHost信息

services.Configure(Configuration.GetSection("MongodbHost"));

}

在ConfigureServices方法中調用上面定義的方法:

public voidConfigureServices(IServiceCollection services)

{//調用OptionConfigure方法

OptionConfigure(services);

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

}

在控制器中使用,代碼如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.Extensions.Options;namespaceReadJsonDemo.Controllers

{

[Route("api/[controller]")]

[ApiController]public classMongodbController : ControllerBase

{private readonlyMongodbHostOptions _mongodbHostOptions;///

///通過構造函數注入///

///

public MongodbController(IOptionsmongodbHostOptions)

{

_mongodbHostOptions=mongodbHostOptions.Value;

}

[HttpGet]public asyncTask Get()

{await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" +_mongodbHostOptions.Table);

}

}

}

運行結果:

3、讀取自定義json文件

在上面的例子中都是讀取的系統自帶的appsettings.json文件,那么該如何讀取我們自己定義的json文件呢?這里可以使用ConfigurationBuilder類。

實例化類

var builder = new ConfigurationBuilder();

添加方式1

builder.AddJsonFile("path", false, true);

其中path表示json文件的路徑,包括路徑和文件名。

添加方式2

builder.Add(new JsonConfigurationSource {Path= "custom.json",Optional=false,ReloadOnChange=true }).Build()

具體代碼如下:

private voidCustomOptionConfigure(IServiceCollection services)

{

IConfiguration _configuration;var builder = newConfigurationBuilder();//方式1//_configuration = builder.AddJsonFile("custom.json", false, true).Build();//方式2

_configuration = builder.Add(new JsonConfigurationSource {Path= "custom.json",Optional=false,ReloadOnChange=true}).Build();

services.Configure(_configuration.GetSection("WebSiteConfig"));

}

ConfigureServices方法如下:

public voidConfigureServices(IServiceCollection services)

{//調用OptionConfigure方法

OptionConfigure(services);

CustomOptionConfigure(services);

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

}

控制器代碼如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.Extensions.Options;namespaceReadJsonDemo.Controllers

{

[Route("api/[controller]")]

[ApiController]public classMongodbController : ControllerBase

{private readonlyMongodbHostOptions _mongodbHostOptions;private readonlyWebSiteOptions _webSiteOptions;///

///通過構造函數注入///

///

public MongodbController(IOptions mongodbHostOptions,IOptionswebSiteOptions)

{

_mongodbHostOptions=mongodbHostOptions.Value;

_webSiteOptions=webSiteOptions.Value;

}

[HttpGet]public asyncTask Get()

{await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" +_mongodbHostOptions.Table);await Response.WriteAsync("\r\n");await Response.WriteAsync("WebSiteName:" + _webSiteOptions.WebSiteName + "\r\nWebSiteUrl;" +_webSiteOptions.WebSiteUrl);

}

}

}

二、在類庫中讀取json文件

在上面的示例中都是直接在應用程序中讀取的,那么如何在單獨的類庫中讀取json文件呢?看下面的示例代碼:

usingMicrosoft.Extensions.Configuration;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.Extensions.Options;usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Text;namespaceCommon

{public classJsonConfigHelper

{public static T GetAppSettings(string fileName, string key) where T : class, new()

{//獲取bin目錄路徑

var directory =AppContext.BaseDirectory;

directory= directory.Replace("\\", "/");var filePath = $"{directory}/{fileName}";if (!File.Exists(filePath))

{var length = directory.IndexOf("/bin");

filePath= $"{directory.Substring(0, length)}/{fileName}";

}

IConfiguration configuration;var builder = newConfigurationBuilder();

builder.AddJsonFile(filePath,false, true);

configuration=builder.Build();var appconfig = newServiceCollection()

.AddOptions()

.Configure(configuration.GetSection(key))

.BuildServiceProvider()

.GetService>()

.Value;returnappconfig;

}

}

}

注意:這里要添加如下幾個程序集,并且要注意添加的程序集的版本要和.net core web項目里面的程序集版本一致,否則會報版本沖突的錯誤

1、Microsoft.Extensions.Configuration

2、Microsoft.Extensions.configuration.json

3、Microsoft.Extensions.Options

4、Microsoft.Extensions.Options.ConfigurationExtensions

5、Microsoft.Extensions.Options

json文件如下:

{"WebSiteConfig": {"WebSiteName": "CustomWebSite","WebSiteUrl": "https:localhost:12345"},"DbConfig": {"DataSource": "127.0.0.1","InitialCatalog": "MyDb","UserId": "sa","Password": "123456"}

}

DbHostOptions實體類定義如下:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;namespaceReadJsonDemo

{public classDbHostOptions

{public string DataSource { get; set; }public string InitialCatalog { get; set; }public string UserId { get; set; }public string Password { get; set; }

}

}

注意:這里的DbHostOptions實體類應該建在單獨的類庫中,這里為了演示方便直接建在應用程序中了。

在控制器中調用:

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Threading.Tasks;usingCommon;usingMicrosoft.AspNetCore.Http;usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.Extensions.Options;namespaceReadJsonDemo.Controllers

{

[Route("api/[controller]")]

[ApiController]public classMongodbController : ControllerBase

{private readonlyMongodbHostOptions _mongodbHostOptions;private readonlyWebSiteOptions _webSiteOptions;///

///通過構造函數注入///

///

public MongodbController(IOptions mongodbHostOptions,IOptionswebSiteOptions)

{

_mongodbHostOptions=mongodbHostOptions.Value;

_webSiteOptions=webSiteOptions.Value;

}

[HttpGet]public asyncTask Get()

{

DbHostOptions dbOptions= JsonConfigHelper.GetAppSettings("custom.json", "DbConfig");await Response.WriteAsync("DataSource:" + dbOptions.DataSource + "\r\nInitialCatalog;" + dbOptions.InitialCatalog+ "\r\nUserId:"+dbOptions.UserId+ "\r\nPassword"+dbOptions.Password);await Response.WriteAsync("\r\n");await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" +_mongodbHostOptions.Table);await Response.WriteAsync("\r\n");await Response.WriteAsync("WebSiteName:" + _webSiteOptions.WebSiteName + "\r\nWebSiteUrl;" +_webSiteOptions.WebSiteUrl);

}

}

}

運行結果:

總結

以上是生活随笔為你收集整理的netcore读取json文件_.net core读取json格式的配置文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。