咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 407|回复: 0

[ASP.NET] .Net Core读取Json配置文件的实现示例

[复制链接]
  • TA的每日心情
    无聊
    2019-5-27 08:20
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2020-2-28 17:35:51 | 显示全部楼层 |阅读模式
    前言:在与传统的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": "*"
    }
    .Net Core读取Json配置文件的实现示例-1.png

    在控制器中注入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 "";
      }

    }
    }
    .Net Core读取Json配置文件的实现示例-2.png

    当然也可以读取数组形式的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
    .Net Core读取Json配置文件的实现示例-3.png

    首先在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
    .Net Core读取Json配置文件的实现示例-4.png

    控制器中使用:

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

    }
    }
    .Net Core读取Json配置文件的实现示例-5.png

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

    第三种:这种应该比较常见,任意读取自定义的json文件
    首先建立一个json文件

    {
    "system_version": {
    "Edition": ".Net Core 3.0",
    "Project_Name": "Read.json"
    }
    }
    .Net Core读取Json配置文件的实现示例-7.png

    再建一个类,封装一个方法

    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();

      }

    }
    }
    .Net Core读取Json配置文件的实现示例-8.png

    在控制器中调用:

    [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
       });
      }
    .Net Core读取Json配置文件的实现示例-9.png

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

    Demo地址:https://github.com/Davenever/Read_Json.git
    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持咔叽网单www.2nzz.com。

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-29 06:36

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表