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日

相关文章

  • 轻松学习C#的结构和类

    您好,如果想轻松学习C#的结构和类,可以按照以下步骤进行: 1.了解C#语言的基本结构和类的基础概念 首先可以从阅读一些相关的C#基础书籍或者网站文章开始,例如Microsoft官方的C#开发文档。 掌握C#语言关键字、语法和面向对象的基础特性,例如C#中type、class、struct、interface等的使用方法,以及属性、方法、字段、构造器等类的基…

    C# 2023年6月7日
    00
  • ASP.NET Core应用JWT进行用户认证及Token的刷新方案

    下面我将为您详细讲解如何使用 ASP.NET Core 应用 JWT 进行用户认证及 Token 的刷新方案。 什么是 JWT? JWT (JSON Web Token) 是一个开放标准 (RFC 7519),用于在网络上传输声明 (Claims),通常用于身份认证。JWT 由三部分组成:头部 (Header)、载荷 (Payload) 和签名 (Signa…

    C# 2023年6月3日
    00
  • C#使用List类实现动态变长数组的方法

    下面我将详细讲解C#使用List类实现动态变长数组的方法的完整攻略: 什么是List类 List类是一个通用的动态数组,可以存储任何类型的元素(包括自定义类型)。它继承自 IList 接口并实现了 ICollection 和 IEnumerable 接口。它是一个可调整大小的数组,能够自动扩展和缩小以适应元素的数量。 List类的操作方法 List类的常用方…

    C# 2023年6月7日
    00
  • C#异常执行重试的实现方法

    以下是详细讲解“C#异常执行重试的实现方法”的完整攻略。 C#异常执行重试的实现方法 在C#开发中,我们经常会遇到一些意料之外的错误,导致程序出现异常,从而导致程序运行中断。如果这些异常被合理的处理,我们可以重试多次,以期望程序能够在重试结束后正常执行。本文将介绍两种实现C#异常执行重试的方法。 方法一:使用try-catch语句和循环控制语句 首先,我们可…

    C# 2023年6月1日
    00
  • C#中backgroundworker的使用教程

    下面是“C#中BackgroundWorker的使用教程”的完整攻略。 背景 BackgroundWorker是C#中常用于执行后台任务的组件,它可以执行不会阻塞UI线程的耗时操作,并在操作完成后返回结果。这个组件非常适合处理长时间运行的操作,例如读取、写入文件或进行网络通信等。 BackgroundWorker的基本用法 实例化BackgroundWork…

    C# 2023年6月7日
    00
  • ASP.NET Core MVC 从入门到精通之HttpContext

    随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启…

    C# 2023年5月4日
    00
  • asp.net中水印的具体实现代码

    实现 ASP.NET 中水印的具体步骤如下: 步骤1:在页面中引用 JavaScript 和 CSS 文件 首先,在页面头部引用以下两个文件: <link rel="stylesheet" type="text/css" href="watermark.css" /> <scrip…

    C# 2023年5月31日
    00
  • 利用WPF窗口程序设计简单计算器

    利用WPF窗口程序设计简单计算器攻略 WPF(Windows Presentation Foundation)是Windows应用程序开发的一种技术,它通过XAML语言和C#等编程语言实现了数据绑定、样式样板、动画、2D和3D绘图等功能,再加上.NET框架的各种支持,使得WPF成为Windows应用程序开发中非常重要的工具。接下来,本文将详细讲解如何利用WP…

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