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#中使用HttpDownLoadHelper下载文件实例

    这里为您详细讲解 C# 中使用 HttpDownLoadHelper 下载文件实例的完整攻略。 什么是 HttpDownLoadHelper? HttpDownLoadHelper 是 C# 中的一个类,它可以帮助我们建立 HTTP 连接,下载文件并管理下载过程。 HttpDownLoadHelper 的使用方法 下面我们逐步介绍 HttpDownLoadH…

    C# 2023年5月31日
    00
  • Response.Redirect 正在中止线程解决方案

    在ASP.NET中,有时我们会使用Response.Redirect方法重定向用户的请求。但是,当我们在调用Response.Redirect方法时,会发现有时候会出现一个警告信息:“Response.Redirect正在中止线程”,在某些情况下,可能会影响网站的性能和稳定性。那么如何避免这个问题呢?下面是一个完整的攻略。 1. 了解问题 在解决问题之前,我…

    C# 2023年5月15日
    00
  • C#实现的24点游戏实例详解

    C#实现的24点游戏实例详解 介绍 C#实现的24点游戏是一款运用纸牌来进行加减乘除的小游戏,主要目的是让玩家通过选择纸牌,使用加减乘除等运算,得到24这个数。本篇攻略将详细讲解如何实现这个小游戏。 代码实现 代码结构 在开始编写代码前,我们需要先了解一下这个小游戏的框架。C#实现的24点游戏包含三个主要部分:纸牌、答案计算以及游戏流程控制。我们需要将这些部…

    C# 2023年6月7日
    00
  • ASP.NET MVC把数据库中枚举项的数字转换成文字

    以下是“ASP.NET MVC把数据库中枚举项的数字转换成文字”的完整攻略: 什么是枚举 枚举是一种特殊的数据类型,它定义了一组命名的常量。在.NET MVC中,枚举通常用于表示状态、类型等。 ASP.NET MVC把数据库中枚举项的数字转换成文字的过程 以下ASP.NET MVC把数据库中枚举项的数字转换成文字的详细过程: 步骤1:定义枚举 首先,我们需要…

    C# 2023年5月12日
    00
  • 在 .NET MAUI 中加载 json 文件的方法

    以下是关于在.NET MAUI中加载JSON文件的方法的完整攻略: 1. 问题描述 在.NET MAUI应用程序中,我们需要加载JSON文件以便读取其中的数据。本攻略将介绍如何在.NET MAUI中加载JSON文件。 2. 解决方案 在.NET MAUI中,我们可以使用System.Text.Json命名空间中的JsonSerializer类来加载JSON文…

    C# 2023年5月12日
    00
  • C#实现上位机与欧姆龙PLC通讯(FINS)

    C#实现上位机与欧姆龙PLC通讯(FINS)的完整攻略 背景介绍 欧姆龙PLC是一种常见的现场控制设备,与上位机进行通讯可以实现对PLC控制的监管和控制。而C#作为一种常见的编程语言,也可以用来实现上位机和PLC的通讯。本文将介绍如何使用C#实现上位机和欧姆龙PLC的通讯。 实现步骤 创建C#项目 在Visual Studio中创建一个C#项目。 导入Omr…

    C# 2023年5月15日
    00
  • Unity3D实现虚拟按钮控制人物移动效果

    下面是“Unity3D实现虚拟按钮控制人物移动效果”的完整攻略: 需求分析 我们需要实现一个虚拟按钮,用于控制人物的移动效果,包括角色的左右移动和跳跃功能。 环境配置 首先需要创建一个Unity项目,并导入角色和场景资源。接着创建一个空的GameObject,命名为“UI”。在UI下创建一个Canvas,并调整Canvas的层级为第三层。 在Canvas下创…

    C# 2023年6月3日
    00
  • c#获取数组中最大数的值

    获取数组中最大数的值可以通过以下几个步骤实现: 1.定义并初始化一个数组,例如:arr = new int[] { 1, 5, 3, 2, 4 };。 2.设置一个变量max,用来记录最大值。可以用数组中第一个元素初始化,例如:int max = arr[0];。 3.遍历数组,比较每个元素与max的大小,如果元素大于max,则更新max,例如: for (…

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