.Net Core读取Json配置文件的实现示例
前言:在与传统的asp.netMVC项目相比,.netcore项目在项目目录的文件结构上和功能上与前者都有很大的区别。例如:在.netcore中使用Startup.cs取代Global.asax文件用于加载应用程序的配置和各种启动项。appsettings.json取代web.config文件用于存储应用程序所需的配置参数等等。。。
OK!步入正题,下面来说一下如何读取Json配置文件中的参数。
第一种:使用IConfiguration接口
我们先在appsettings.json中配置好数据库连接字符串,然后读取它
{ "Connection":{ "dbContent":"DataSource=.;InitialCatalog=test;UserID=sa;Password=123456" }, "Logging":{ "LogLevel":{ "Default":"Information", "Microsoft":"Warning", "Microsoft.Hosting.Lifetime":"Information" } }, "AllowedHosts":"*" }
在控制器中注入IConfiguration接口
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Threading.Tasks; usingMicrosoft.AspNetCore.Mvc; usingMicrosoft.Extensions.Configuration; namespaceRead.json.Controllers { [ApiController] [Route("[controller]")] publicclassReadController:Controller { privateIConfiguration_configuration; publicReadController(IConfigurationconfiguration) { _configuration=configuration; } [HttpPost] publicasyncTaskReadJson() { //读参 stringconn=_configuration["Connection:dbContent"]; return""; } } }
当然也可以读取数组形式的json,一样的先在appsettings.json中写好配置参数,如下:
{ "Connection":{ "dbContent":"DataSource=.;InitialCatalog=test;UserID=sa;Password=123456" }, //------------------------ "Content":[ { "Trade_name":{ "test1":"小熊饼干", "test2":"旺仔QQ糖", "test3":"娃哈哈牛奶" } } ], //------------------------ "Logging":{ "LogLevel":{ "Default":"Information", "Microsoft":"Warning", "Microsoft.Hosting.Lifetime":"Information" } }, "AllowedHosts":"*" }
比如我们想读取test1
stringcommodity_test1=_configuration["Content:0:Trade_name:test1"];
第二种:使用IOptions
先把NuGet包导进项目:Microsoft.Extensions.Options.ConfigurationExtensions
首先在appsettings.json中添加节点如下
{ "Connection":{ "dbContent":"DataSource=.;InitialCatalog=test;UserID=sa;Password=123456" }, //------------------------ "Content":[ { "Trade_name":{ "test1":"小熊饼干", "test2":"旺仔QQ糖", "test3":"娃哈哈牛奶" } } ], //------------------------ "Logging":{ "LogLevel":{ "Default":"Information", "Microsoft":"Warning", "Microsoft.Hosting.Lifetime":"Information" } }, "AllowedHosts":"*", //============================== "Information":{ "school":{ "Introduce":{ "Name":"实验小学", "Class":"中班", "Number":"15人" }, "Region":{ "Province":"湖北", "City":"武汉", "Area":"洪山区" }, "Detailed_address":[ { "Address":"佳园路207号" } ] } } //============================== }
然和再建立一个与这个节点"相同"的类
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Threading.Tasks; namespaceRead.json { publicclassInformation { publicSchoolschool{get;set;} } publicclassSchool { publicIntroduceIntroduce{get;set;} publicRegionRegion{get;set;} publicListdata{get;set;} } publicclassIntroduce { publicstringName{get;set;} publicstringClass{get;set;} publicstringNumber{get;set;} } publicclassRegion { publicstringProvince{get;set;} publicstringCity{get;set;} publicstringArea{get;set;} } publicclassDetailed_address { publicstringAddress{get;set;} } }
在Startup中添加如下代码
#region服务注册,在控制器中通过注入的形式使用 services.AddOptions(); services.Configure(Configuration.GetSection("Information")); #endregion
控制器中使用:
usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Threading.Tasks; usingMicrosoft.AspNetCore.Mvc; usingMicrosoft.Extensions.Configuration; usingMicrosoft.Extensions.Options; namespaceRead.json.Controllers { [Route("api/[controller]/[action]")] [ApiController] publicclassReadController:Controller { privateIConfiguration_configuration; readonlyInformation_Information; readonlyIOptions_options; publicReadController(IConfigurationconfiguration, InformationInformation, IOptions options) { _configuration=configuration; _Information=Information; _options=options; } [HttpGet] publicasyncTask ReadInformation() { stringAddress=_options.Value.school.Region.Province+"-"+ _options.Value.school.Region.City+"-"+ _options.Value.school.Region.Area+"-"+ _options.Value.school.Detailed_address[0].Address+"-"+ _options.Value.school.Introduce.Name+"-"+ _options.Value.school.Introduce.Class+"-"+ _options.Value.school.Introduce.Number; returnJson(Address); } [HttpPost] publicasyncTask ReadJson() { stringconn=_configuration["Connection:dbContent"]; stringcommodity=_configuration["Content:0:Trade_name:test1"]; return""; } } }
第三种:这种应该比较常见,任意读取自定义的json文件
首先建立一个json文件
{ "system_version":{ "Edition":".NetCore3.0", "Project_Name":"Read.json" } }
再建一个类,封装一个方法
usingMicrosoft.Extensions.Configuration; usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Threading.Tasks; namespaceRead.json { publicclassJson_File { publicIConfigurationRootRead_Json_File() { //这句代码会读取read_json.json中的内容 returnnewConfigurationBuilder().AddJsonFile("read_json.json") .Build(); } } }
在控制器中调用:
[HttpGet] publicasyncTaskReadSystemVersion() { varconfiguration=_json_File.Read_Json_File(); stringsystem="使用的是"+configuration["system_version:Edition"]+"的版本"+","+ "项目名称是"+configuration["system_version:Project_Name"]; returnJson(new { data=system }); }
Demo地址:https://github.com/Davenever/Read_Json.git
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。