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

前言:在与传统的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

控制器中使用:

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 "";
  }

 }
}

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

Demo地址:https://github.com/Davenever/Read_Json.git

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

(0)

相关推荐

  • .NET Core简单读取json配置文件

    背景 目前发现网上的 .NET Core 读取 json 格式的配置文件有点麻烦,自己想搞个简单点的. .NET Core 目前的主流形式是采用 json 格式来存储配置文件信息,跟之前的诸如 app.config 和 web.config 等 xml 形式的配置文件有所区别. json 文件 demo appsettings.json: { "name": "wen", "age": 26, "family": { &quo

  • .Net Core读取Json配置文件的实现示例

    前言:在与传统的asp.net MVC项目相比,.net core项目在项目目录的文件结构上和功能上与前者都有很大的区别.例如:在.net core中使用Startup.cs取代Global.asax文件用于加载应用程序的配置和各种启动项.appsettings.json取代web.config文件用于存储应用程序所需的配置参数等等... OK!步入正题,下面来说一下如何读取Json配置文件中的参数. 第一种:使用IConfiguration接口 我们先在appsettings.json中配置好

  • ASP.NET CORE读取json格式配置文件

    目录 一.在Startup类中读取json配置文件 1.使用Configuration直接读取 2.使用IOptions接口 1.定义实体类 2.修改json文件 3.在StartUp类里面配置 3.读取自定义json文件 实例化类 添加方式1 添加方式2 二.在类库中读取json文件 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的

  • vs 中C#项目读取JSON配置文件的方法

    config.json 文件内容如下 { "Data": { "DefaultConnection": { "ConnectionString": "Server=(localdb)\\MSSQLLocalDB;Database=Books;Trusted_Connection=True;" } }, "Appsettings": { "Name": "XiaoLi"

  • java简单读取properties配置文件的方法示例

    本文实例讲述了java简单读取properties配置文件的方法.分享给大家供大家参考,具体如下: 读取配置文件,小结如下 import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; public class loadConf { private Properties prop = new Properties(); private void loadconf() t

  • .NET Core控制台应用ConsoleApp读取appsettings.json配置文件

    准备 Visual Studio 2017 .NET Core 2.1 新建控制台应用(.NET Core) 默认的 Program.cs // Program.cs using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } } 新建 appsettings.json 我们需要从指定的配置文件

  • .net core中编辑json配置文件的方法

    引言 最近在具体项目开发应用中,项目采用的json格式配置文件,配置文件的加载采用的IConfiguration接口对象进行的管理,这是.net standard时代,微软所提供的现代化的配置管理工具. 项目设计中,需要在运行过程中,将远程服务端发送过来的配置信息回写到配置文件中.然而,必应也好,百度也罢,翻遍网络,这套现代化的配置管理模型中,却找不到一个可以改变配置回写的方法. 无奈之下,只好自己动手,手动造轮子了. .NET Standard时代的配置模型 随着.NET Standard时代

  • ASP.NET Core读取配置文件

    ASP.NET Core 中,可以使用 ConfigurationBuilder 对象来构建. 主要分为三部:配置数据源 -> ConfigurationBuilder -> 使用. 数据源可来自字典或配置文件. 数据源要么继承 IConfigurationSource ,要么从配置文件中读取. 1,来自字典 我们先使用字典存储键值对,来设置配置, test = 配置,然后使用 ConfigurationBuilder.Add() 方法添加数据源, Add 方法可以添加继承了 IConfigu

  • 使用spring工厂读取property配置文件示例代码

    本文将介绍两种Spring读取property配置文件的方法,接下来看看具体内容. 一.通过Spring工厂读取 示例: public class PropertyConfig { private static AbstractBeanFactory beanFactory = null; private static final Map<String,String> cache = new oncurrentHashMap<>(); @Inject public Property

  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    一.背景 在项目开发的过程当中,开发环境与生产环境的配置肯定是不一样的.拿个最简单的例子来说,比如连接字符串这种东西,开发环境肯定不能连生产数据库.在之前的话,这种情况基本靠准备两个同名的配置文件来进行处理,然后你在本地就使用本地的配置文件,生产环境就使用生产环境的配置文件,十分麻烦. ASP.NET Core支持利用环境变量来动态配置 JSON 文件,下面就来看一下如何在项目中使用这样功能吧. 二.准备工作 ASP.NET Core在应用启动时读取环境变量ASPNETCORE_ENVIRONM

随机推荐