前言:在与传统的asp.net 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<string> 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<T>来读取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<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 服务注册,在控制器中通过注入的形式使用            services.AddOptions();            services.Configure<Information>(Configuration.GetSection("Information"));            #endregion

控制器中使用:

{  "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号"        }      ]    }  }  //==============================}

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

本文来自 C#.Net教程 栏目,欢迎学习!

更多相关文章

  1. c语言程序是从源文件第一条语句开始执行的,这句话是错的吗
  2. c语言源程序文件的后缀是什么?
  3. c语言文件打开方式有哪些
  4. c语言如何读取txt文件内容?
  5. c语言源程序经过编译后,生成文件的后缀是什么?
  6. c程序编译后生成什么文件
  7. c++源程序文件的扩展名是什么
  8. c语言文件的扩展名是什么
  9. c语言fopen打开文件失败的原因是什么?

随机推荐

  1. (1) Android中Binder调用流程 --- 匿名和实
  2. 【读书笔记】【Android 开发艺术探索】第
  3. android实现View的渐隐渐现功能
  4. 基于移动平台的多媒体框架——移植Live55
  5. Android设备到底侵犯了微软的什么专利
  6. 漫谈Android数据缓存、数据序列化和Inten
  7. Dagger2 在 Android 项目的正确使用方式
  8. Android最新面试题汇总 持续更新
  9. Android之如何判断定位是否开启及定位模
  10. 【Android 内存优化】Bitmap 硬盘缓存 (