.Net Core讀取Json配置文件的實(shí)現(xiàn)示例
前言:在與傳統(tǒng)的asp.net MVC項(xiàng)目相比,.net core項(xiàng)目在項(xiàng)目目錄的文件結(jié)構(gòu)上和功能上與前者都有很大的區(qū)別。例如:在.net core中使用Startup.cs取代Global.asax文件用于加載應(yīng)用程序的配置和各種啟動(dòng)項(xiàng)。appsettings.json取代web.config文件用于存儲(chǔ)應(yīng)用程序所需的配置參數(shù)等等。。。
OK!步入正題,下面來(lái)說(shuō)一下如何讀取Json配置文件中的參數(shù)。
第一種:使用IConfiguration接口
我們先在appsettings.json中配置好數(shù)據(jù)庫(kù)連接字符串,然后讀取它
{ "Connection": { "dbContent": "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" }
在控制器中注入IConfiguration接口
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; namespace Read.json.Controllers { [ApiController] [Route("[controller]")] public class ReadController : Controller { private IConfiguration _configuration; public ReadController(IConfiguration configuration) { _configuration = configuration; } [HttpPost] public async Task<string> ReadJson() { //讀參 string conn = _configuration["Connection:dbContent"]; return ""; } } }
當(dāng)然也可以讀取數(shù)組形式的json,一樣的先在appsettings.json中寫(xiě)好配置參數(shù),如下:
{ "Connection": { "dbContent": "Data Source=.;Initial Catalog=test;User ID=sa;Password=123456" }, //------------------------ "Content": [ { "Trade_name": { "test1": "小熊餅干", "test2": "旺仔QQ糖", "test3": "娃哈哈牛奶" } } ], //------------------------ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*" }
比如我們想讀取test1
string commodity_test1 = _configuration["Content:0:Trade_name:test1"];
第二種:使用IOptions<T>來(lái)讀取json配置文件
先把NuGet包導(dǎo)進(jìn)項(xiàng)目:Microsoft.Extensions.Options.ConfigurationExtensions
首先在appsettings.json中添加節(jié)點(diǎn)如下
{ "Connection": { "dbContent": "Data Source=.;Initial Catalog=test;User ID=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": "實(shí)驗(yàn)小學(xué)", "Class": "中班", "Number": "15人" }, "Region": { "Province": "湖北", "City": "武漢", "Area": "洪山區(qū)" }, "Detailed_address": [ { "Address": "佳園路207號(hào)" } ] } } //============================== }
然和再建立一個(gè)與這個(gè)節(jié)點(diǎn)"相同"的類
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Read.json { public class Information { public School school { get; set; } } public class School { public Introduce Introduce { get; set; } public Region Region { get; set; } public List<Detailed_address> data { get; set; } } public class Introduce { public string Name { get; set; } public string Class { get; set; } public string Number { get; set; } } public class Region { public string Province { get; set; } public string City { get; set; } public string Area { get; set; } } public class Detailed_address { public string Address { get; set; } } }
在Startup中添加如下代碼
#region 服務(wù)注冊(cè),在控制器中通過(guò)注入的形式使用 services.AddOptions(); services.Configure<Information>(Configuration.GetSection("Information")); #endregion
控制器中使用:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Options; namespace Read.json.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class ReadController : Controller { private IConfiguration _configuration; readonly Information _Information; readonly IOptions<Information> _options; public ReadController(IConfiguration configuration, Information Information, IOptions<Information> options) { _configuration = configuration; _Information = Information; _options = options; } [HttpGet] public async Task<IActionResult> ReadInformation() { string Address = _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; return Json(Address); } [HttpPost] public async Task<string> ReadJson() { string conn = _configuration["Connection:dbContent"]; string commodity = _configuration["Content:0:Trade_name:test1"]; return ""; } } }
第三種:這種應(yīng)該比較常見(jiàn),任意讀取自定義的json文件
首先建立一個(gè)json文件
{ "system_version": { "Edition": ".Net Core 3.0", "Project_Name": "Read.json" } }
再建一個(gè)類,封裝一個(gè)方法
using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Read.json { public class Json_File { public IConfigurationRoot Read_Json_File() { //這句代碼會(huì)讀取read_json.json中的內(nèi)容 return new ConfigurationBuilder().AddJsonFile("read_json.json") .Build(); } } }
在控制器中調(diào)用:
[HttpGet] public async Task<IActionResult> ReadSystemVersion() { var configuration = _json_File.Read_Json_File(); string system = "使用的是" + configuration["system_version:Edition"] + "的版本" + "," + "項(xiàng)目名稱是" + configuration["system_version:Project_Name"]; return Json(new { data = system }); }
Demo地址:https://github.com/Davenever/Read_Json.git
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:asp.net core 3.0中使用swagger的方法與問(wèn)題
欄 目:ASP.NET
下一篇:.NET 開(kāi)發(fā)環(huán)境搭建圖文詳解
本文標(biāo)題:.Net Core讀取Json配置文件的實(shí)現(xiàn)示例
本文地址:http://mengdiqiu.com.cn/a1/ASP_NET/10853.html
您可能感興趣的文章
- 01-11如何給asp.net core寫(xiě)個(gè)簡(jiǎn)單的健康檢查
- 01-11淺析.Net Core中Json配置的自動(dòng)更新
- 01-11.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件XRPC詳解
- 01-11.NET Core 遷移躺坑記續(xù)集之Win下莫名其妙的超時(shí)
- 01-11.NET開(kāi)發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)
- 01-11docker部署Asp.net core應(yīng)用的完整步驟
- 01-11.net core webapi jwt 更為清爽的認(rèn)證詳解
- 01-11ASP.NET Core靜態(tài)文件的使用方法
- 01-11.NET Core 3.0之創(chuàng)建基于Consul的Configuration擴(kuò)展組件
- 01-11.net core EF Core調(diào)用存儲(chǔ)過(guò)程的方式


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-11vscode extension插件開(kāi)發(fā)詳解
- 01-11VsCode插件開(kāi)發(fā)之插件初步通信的方法
- 01-11如何給asp.net core寫(xiě)個(gè)簡(jiǎn)單的健康檢查
- 01-11.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件
- 01-11淺析.Net Core中Json配置的自動(dòng)更新
- 01-11.NET開(kāi)發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)
- 01-11.NET Core 遷移躺坑記續(xù)集之Win下莫名其
- 01-11.net core webapi jwt 更為清爽的認(rèn)證詳解
- 01-11docker部署Asp.net core應(yīng)用的完整步驟
- 01-11ASP.NET Core靜態(tài)文件的使用方法
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?