700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > netcore读取json文件_.Net Core读取Json配置文件的实现示例

netcore读取json文件_.Net Core读取Json配置文件的实现示例

时间:2020-08-30 01:33:30

相关推荐

netcore读取json文件_.Net Core读取Json配置文件的实现示例

前言:在与传统的 MVC项目相比,.net core项目在项目目录的文件结构上和功能上与前者都有很大的区别。例如:在.net core中使用Startup.cs取代Global.asax文件用于加载应用程序的配置和各种启动项。appsettings.json取代web.config文件用于存储应用程序所需的配置参数等等。。。

OK!步入正题,下面来说一下如何读取Json配置文件中的参数。

第一种:使用IConfiguration接口

我们先在appsettings.json中配置好数据库连接字符串,然后读取它

{

"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 ReadJson()

{

//读参

string conn = _configuration["Connection:dbContent"];

return "";

}

}

}

当然也可以读取数组形式的json,一样的先在appsettings.json中写好配置参数,如下:

{

"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来读取json配置文件

先把NuGet包导进项目:Microsoft.Extensions.Options.ConfigurationExtensions

首先在appsettings.json中添加节点如下

{

"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": "实验小学",

"Class": "中班",

"Number": "15人"

},

"Region": {

"Province": "湖北",

"City": "武汉",

"Area": "洪山区"

},

"Detailed_address": [

{

"Address": "佳园路207号"

}

]

}

}

//==============================

}

然和再建立一个与这个节点"相同"的类

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 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 服务注册,在控制器中通过注入的形式使用

services.AddOptions();

services.Configure(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 _options;

public ReadController(IConfiguration configuration,

Information Information,

IOptions options)

{

_configuration = configuration;

_Information = Information;

_options = options;

}

[HttpGet]

public async Task 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 ReadJson()

{

string conn = _configuration["Connection:dbContent"];

string commodity = _configuration["Content:0:Trade_name:test1"];

return "";

}

}

}

第三种:这种应该比较常见,任意读取自定义的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中的内容

return new ConfigurationBuilder().AddJsonFile("read_json.json")

.Build();

}

}

}

在控制器中调用:

[HttpGet]

public async Task 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地址:/Davenever/Read_Json.git

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。