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

下面我来详细讲解在 VS 中 C# 项目读取 JSON 配置文件的方法。

一、准备工作

在讲解具体方法前,我们需要先进行准备工作:

  1. 首先需要确保你的项目中已经包含了 Newtonsoft.Json 的 NuGet 包,否则,请右键项目选择“管理 NuGet 包”来安装该包。

  2. 其次需要准备一个 JSON 配置文件作为示例,这里以以下内容为例:

{
  "Server": {
    "ip": "localhost",
    "port": 8080
  },
  "Database": {
    "type": "mysql",
    "host": "localhost",
    "port": 3306,
    "username": "root",
    "password": "123456",
    "database": "test"
  }
}
  1. 最后,我们需要在项目中添加一个文件夹来存储配置文件,命名为 Configs

二、读取 JSON 配置文件

1. 使用 JObject 类读取

JObject 类是 Newtonsoft.Json 包中用于操作 JSON 数据的一个类,我们可以使用它来读取 JSON 配置文件。具体操作步骤如下:

  1. 首先,我们需要在项目中引用 Newtonsoft.Json 包:
using Newtonsoft.Json.Linq;
  1. 在代码中使用 JObject 类读取配置文件:
string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "config.json");
string configFileContent = File.ReadAllText(configPath);
JObject configJson = JObject.Parse(configFileContent);

// 读取 Server 节点下的 ip 和 port 值
string ip = (string)configJson.SelectToken("Server.ip", false);
int port = (int)configJson.SelectToken("Server.port", false);

// 读取 Database 节点下的 type、host、port、username、password、database 值
string type = (string)configJson.SelectToken("Database.type", false);
string host = (string)configJson.SelectToken("Database.host", false);
int db_port = (int)configJson.SelectToken("Database.port", false);
string username = (string)configJson.SelectToken("Database.username", false);
string password = (string)configJson.SelectToken("Database.password", false);
string database = (string)configJson.SelectToken("Database.database", false);

上述代码中,我们先使用 Path.Combine 方法构造配置文件路径,然后使用 File.ReadAllText 方法读取配置文件内容。最后使用 JObject.Parse 方法将字符串解析成 JObject 类型的对象,再通过 SelectToken 方法读取配置文件中的具体值。需要注意的是,SelectToken 方法的第二个参数用于指定是否严格要求读取的值存在,如果为 false 则表示即使节点不存在也不会报错。

2. 使用自定义配置类读取

在实际开发中,我们可能会使用一个自定义的配置类来封装配置文件中的各项配置,这样可以方便我们进行配置的管理和使用。具体操作步骤如下:

  1. 首先需要定义一个自定义配置类,例如:
public class Config
{
    public class ServerConfig
    {
        public string ip { get; set; }
        public int port { get; set; }
    }

    public class DatabaseConfig
    {
        public string type { get; set; }
        public string host { get; set; }
        public int port { get; set; }
        public string username { get; set; }
        public string password { get; set; }
        public string database { get; set; }
    }

    public ServerConfig Server { get; set; }
    public DatabaseConfig Database { get; set; }
}

上述代码中,我们定义了一个名为 Config 的自定义配置类,包含 ServerConfigDatabaseConfig 两个子类,分别用于封装 ServerDatabase 节点下的属性值。

  1. 然后,在代码中使用自定义配置类读取配置文件:
string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "config.json");
string configFileContent = File.ReadAllText(configPath);
Config config = JsonConvert.DeserializeObject<Config>(configFileContent);

// 使用自定义配置类读取 Server 节点下的 ip 和 port 值
string ip = config.Server.ip;
int port = config.Server.port;

// 使用自定义配置类读取 Database 节点下的 type、host、port、username、password、database 值
string type = config.Database.type;
string host = config.Database.host;
int db_port = config.Database.port;
string username = config.Database.username;
string password = config.Database.password;
string database = config.Database.database;

上述代码中,我们使用 JsonConvert.DeserializeObject 方法将 JSON 字符串转换成 Config 类型的对象,再通过访问对象属性的方式获取具体的值。

三、示例说明

接下来,我来介绍两个使用示例:

1. 控制台程序示例

我来演示如何在控制台程序中使用以上方法读取配置文件:

using System;
using System.IO;
using Newtonsoft.Json.Linq;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "config.json");
            string configFileContent = File.ReadAllText(configPath);
            JObject configJson = JObject.Parse(configFileContent);

            // 读取 Server 节点下的 ip 和 port 值
            string ip = (string)configJson.SelectToken("Server.ip", false);
            int port = (int)configJson.SelectToken("Server.port", false);

            // 读取 Database 节点下的 type、host、port、username、password、database 值
            string type = (string)configJson.SelectToken("Database.type", false);
            string host = (string)configJson.SelectToken("Database.host", false);
            int db_port = (int)configJson.SelectToken("Database.port", false);
            string username = (string)configJson.SelectToken("Database.username", false);
            string password = (string)configJson.SelectToken("Database.password", false);
            string database = (string)configJson.SelectToken("Database.database", false);

            // 输出配置结果
            Console.WriteLine($"Server: {ip}:{port}");
            Console.WriteLine($"Database: {type}://{username}:{password}@{host}:{db_port}/{database}");
            Console.ReadLine();
        }
    }
}

以上代码中,我们通过读取配置文件获取了服务器和数据库的配置信息。

2. Web 应用程序示例

接下来我演示如何在 Web 应用程序中使用自定义配置类读取配置文件:

using System.IO;
using System.Web;
using Newtonsoft.Json;

public class Global : HttpApplication
{
    public static Config AppConfig;

    void Application_Start(object sender, EventArgs e)
    {
        string configPath = Path.Combine(Server.MapPath("~/Configs"), "config.json");
        string configFileContent = File.ReadAllText(configPath);
        AppConfig = JsonConvert.DeserializeObject<Config>(configFileContent);
    }
}

以上代码中,我们将自定义配置类保存到全局变量 AppConfig 中,以便在 Web 应用程序中方便地访问和使用。在 Application_Start 事件中,我们读取配置文件并使用 JsonConvert.DeserializeObject 方法将 JSON 字符串转换成 Config 类型的对象。最后,在需要使用配置信息的地方,我们可以通过 Global.AppConfig 来访问配置信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vs 中C#项目读取JSON配置文件的方法 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • .net core 自定义规范响应的中间件

    在本文中,我们将介绍如何使用 .NET Core 中的中间件来自定义规范响应,以便在 API 调用时返回统一的格式和错误信息。中间件是一种可以在请求和响应管道中执行逻辑的软件组件,它可以对请求或响应进行修改、拦截或处理。我们将使用一个简单的示例来演示如何创建和使用自定义规范响应的中间件。 首先,我们需要创建一个类来表示规范响应的格式,这个类可以包含以下属性:…

    C# 2023年4月18日
    00
  • C#如何将DataTable导出到Excel解决方案

    下面是“C#如何将DataTable导出到Excel解决方案”的完整攻略。 1. 使用官方Office Interop库 首先,我们可以使用官方的Office Interop库来实现将DataTable导出到Excel。以下示例代码演示了如何使用Office Interop库。 using Microsoft.Office.Interop.Excel; //…

    C# 2023年5月31日
    00
  • 详解C#对路径…的访问被拒绝解决过程

    下面是详解C#对路径访问被拒绝的完整攻略: 1. 问题描述 在进行C#开发时,经常会使用到文件系统的操作,如创建、读取、删除等。在进行这些操作的过程中,有时会遇到“访问被拒绝”的错误提示,如下所示: System.UnauthorizedAccessException: 访问被拒绝。 在 System.IO.__Error.WinIOError(Int32 …

    C# 2023年5月31日
    00
  • c#日期间隔计算示例

    c#日期间隔计算示例攻略 这里将讲解如何在c#中计算两个日期之间的间隔,并给出两个示例说明。在开始之前,请确保已经掌握了c#中日期类型的基本使用。 计算两个日期间隔的方式 在c#中,常用的计算两个日期之间间隔的方法如下: TimeSpan span = date1 – date2; 其中,date1和date2都是DateTime类型,表示两个日期。算出来的…

    C# 2023年6月7日
    00
  • C#生成PDF的方法

    下面是C#生成PDF的方法的完整攻略: Step 1:选取PDF生成库 目前市面上有很多PDF生成库可供选择,如iTextSharp、PDFSharp、NReco等,你可以根据自己的需求和实际情况进行选择。这里我们以iTextSharp为例进行讲解。 Step 2:安装iTextSharp 在Visual Studio中打开Nuget Package Man…

    C# 2023年6月1日
    00
  • asp.net实现C#绘制太极图的方法

    让我来详细讲解一下“asp.net实现C#绘制太极图的方法”的完整攻略。 步骤一:准备工作 在开始绘制太极图之前,我们需要先准备好以下工作: 1. 安装Visual Studio 首先,我们需要在电脑上安装Visual Studio,这是一个功能强大的集成开发环境,可以方便地进行C#开发。 2. 创建ASP.NET网站 在Visual Studio中,我们通…

    C# 2023年6月3日
    00
  • vb.net读写文件代码

    当我们使用vb.net编写程序时,经常需要读写文件,下面将介绍vb.net常用的文件读写方法。 读文件 使用StreamReader类 Dim path As String = "C:\test.txt" Using sr As New StreamReader(path) While Not sr.EndOfStream Dim lin…

    C# 2023年5月31日
    00
  • 在.NET7中使用MQTTnet简单实现MQTT通信

    一、MQTT简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,主要用于物联网设备间的通信。MQTT协议采用客户端/服务器架构,支持发布/订阅模式和点对点模式,具有高效、可靠、灵活等优点。 MQTT协议主要由三个要素构成:发布者(publisher)、代理服务器(broker)和订阅者(subs…

    C# 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部