.Net Core讀取Json配置文件的實現(xiàn)示例
前言:在與傳統(tǒng)的asp.net MVC項目相比,.net core項目在項目目錄的文件結(jié)構(gòu)上和功能上與前者都有很大的區(qū)別。例如:在.net core中使用Startup.cs取代Global.asax文件用于加載應(yīng)用程序的配置和各種啟動項。appsettings.json取代web.config文件用于存儲應(yīng)用程序所需的配置參數(shù)等等。。。
OK!步入正題,下面來說一下如何讀取Json配置文件中的參數(shù)。
第一種:使用IConfiguration接口
我們先在appsettings.json中配置好數(shù)據(jù)庫連接字符串,然后讀取它
{
"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中寫好配置參數(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>來讀取json配置文件
先把NuGet包導(dǎo)進項目:Microsoft.Extensions.Options.ConfigurationExtensions
首先在appsettings.json中添加節(jié)點如下
{
"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": "實驗小學(xué)",
"Class": "中班",
"Number": "15人"
},
"Region": {
"Province": "湖北",
"City": "武漢",
"Area": "洪山區(qū)"
},
"Detailed_address": [
{
"Address": "佳園路207號"
}
]
}
}
//==============================
}
然和再建立一個與這個節(jié)點"相同"的類
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ù)注冊,在控制器中通過注入的形式使用
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)該比較常見,任意讀取自定義的json文件
首先建立一個json文件
{
"system_version": {
"Edition": ".Net Core 3.0",
"Project_Name": "Read.json"
}
}
再建一個類,封裝一個方法
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()
{
//這句代碼會讀取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"] + "的版本" + "," +
"項目名稱是" + configuration["system_version:Project_Name"];
return Json(new
{
data = system
});
}
Demo地址:https://github.com/Davenever/Read_Json.git
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:asp.net core 3.0中使用swagger的方法與問題
欄 目:ASP.NET
本文標(biāo)題:.Net Core讀取Json配置文件的實現(xiàn)示例
本文地址:http://www.jygsgssxh.com/a1/ASP_NET/10853.html
您可能感興趣的文章
- 01-11如何給asp.net core寫個簡單的健康檢查
- 01-11淺析.Net Core中Json配置的自動更新
- 01-11.net core高吞吐遠程方法如何調(diào)用組件XRPC詳解
- 01-11.NET Core 遷移躺坑記續(xù)集之Win下莫名其妙的超時
- 01-11.NET開發(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擴展組件
- 01-11.net core EF Core調(diào)用存儲過程的方式


閱讀排行
本欄相關(guān)
- 01-11vscode extension插件開發(fā)詳解
- 01-11VsCode插件開發(fā)之插件初步通信的方法
- 01-11如何給asp.net core寫個簡單的健康檢查
- 01-11.net core高吞吐遠程方法如何調(diào)用組件
- 01-11淺析.Net Core中Json配置的自動更新
- 01-11.NET開發(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)文件的使用方法
隨機閱讀
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實例總結(jié)
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05織夢dedecms什么時候用欄目交叉功能?


