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

yizhihongxing

下面我来详细讲解在 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#类,该类应该能够将普通的文本字符串转换为艺术字,并返回转换后的字符串。 2. 设计思路 在我们设计代码之前,需要确定几个关键要素,包括: 需要支持哪些字符集 艺术字的样式和大小如何设计 需要引用哪些库和依赖项 在这里,我们会选择使用ASCII字符集,这个字符集是我们日常中最常使用的字…

    C# 2023年5月31日
    00
  • 如何在JavaScript中运行.NET Core代码详情

    以下是详细讲解如何在JavaScript中运行.NET Core代码的完整攻略: 规划过程 在.NET Core项目中创建Web API,通过HTTP请求来触发我们想要执行的.NET Core代码 将.NET Core项目打包为NuGet包并将其发布到NuGet服务器上 在JavaScript项目中安装NuGet包,并在代码中调用.NET Core函数 具体…

    C# 2023年6月3日
    00
  • C#使用表达式树实现对象复制的示例代码

    这里是关于C#使用表达式树实现对象复制的完整攻略。 什么是表达式树 表达式树是一个抽象语法树(AST),它建立在Lambda表达式的基础之上。Lambda表达式代表一个方法、一个函数或一个表达式。通过表达式树,编译器将Lambda表达式编译成可执行代码。 在C#中,表达式树通常用于LINQ查询、动态SQL生成、内部DSL等方面,它可以在编译时通过代码生成的方…

    C# 2023年6月1日
    00
  • c# 复写Equals方法的实现

    下面详细讲解如何复写 C# 中的 Equals 方法。 1. 什么是 Equals 方法 在 C# 中,查看任何对象是否相等时,我们可以使用 Equals 方法。Equals 方法是一个虚方法,它是 Object 类的一部分,也就是说,所有的类都继承自 Object 类并从中继承了 Equals 方法。 默认实现是比较两个对象的引用,如果它们引用相同的对象,…

    C# 2023年6月1日
    00
  • C# Path.Combine(params string[] paths):将多个路径组合成一个完整的路径

    C#的Path.Combine(params string[] paths)方法的作用是将多个字符串路径组合为一个路径,并返回组合后的路径字符串。 使用方法: 传递多个字符串路径作为参数,方法会将路径连接成一个路径,最终返回一个字符串路径。 string path1 = @"\usr\home"; string path2 = &quot…

    C# 2023年4月19日
    00
  • 支付宝支付开发——当面付条码支付和扫码支付实例

    支付宝支付开发——当面付条码支付和扫码支付实例 简介 本文将为您介绍如何利用支付宝支付API,实现当面付条码支付和扫码支付功能。通过本文的学习,您将了解到如何进行支付宝开发。 准备工作 注册支付宝开发者账号并申请沙箱环境。 在支付宝开发者平台创建应用,获取APPID和私钥、公钥。 下载并安装alipay-sdk-java 或其他支持支付宝支付的SDK。 了解…

    C# 2023年5月31日
    00
  • asp.net(C#) Access 数据操作类

    当使用asp.net(C#)开发网站时,常常会用到数据库来存储和管理数据。而Access数据库是一个常见的轻量级数据库,为了方便我们对Access数据库进行数据操作,我们可以使用Access 数据操作类。下面将从以下几个方面对Access 数据操作类进行详细讲解: 数据库连接 数据库操作 示例说明 1. 数据库连接 在使用Access 数据操作类时,首先需要…

    C# 2023年6月3日
    00
  • C# 使用SHA1算法对密码进行加密

    要使用C#对密码进行加密,可以使用SHA1算法来实现,以下是详细攻略: 什么是SHA1算法 SHA1(Secure Hash Algorithm 1)是一种常用的加密算法,可以将任意长度的信息压缩成一个固定长度的输出,通常为20个字节(160位)。SHA1算法具有不可逆性、确定性、抗碰撞性等特点,经常被用于数字签名和数据加密等场景。 SHA1加密过程 SHA…

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