C# 读写 JSON 文件全攻略:细致代码示例与注释解析

打印 上一主题 下一主题

主题 527|帖子 527|积分 1581

一、准备工作

在C#中处理JSON文件,通常会借助于第三方库,如Newtonsoft.Json(也被称为Json.NET)。它提供了丰富的API用于JSON的序列化与反序列化。假如您利用的是较新的.NET Core或.NET 6及更高版本,还可以选择利用内置的System.Text.Json库。这里我们将以Newtonsoft.Json为例,因为它在.NET生态中广泛应用且功能成熟。
首先,确保您已经通过NuGet包管理器在项目中安装了Newtonsoft.Json库。假如您尚未安装,请在Visual Studio中打开“工具”->“NuGet包管理器”->“管理办理方案的NuGet包”,搜索并安装“Newtonsoft.Json”。
二、读取JSON文件

步骤1:引入须要的命名空间

  1. [/code] Csharp
  2. [code]using System;
  3. using System.IO;
  4. using Newtonsoft.Json;
复制代码
步骤2:编写读取JSON文件的代码

假设我们有一个名为data.json的文件,其中包罗一个表示用户信息的JSON对象:
  1. [/code] Json
  2. [code]{
  3.   "Name": "John Doe",
  4.   "Age": 30,
  5.   "IsAdmin": false,
  6.   "Skills": ["C#", "JavaScript", "SQL"]
  7. }
复制代码
我们可以利用以下代码将其读取并反序列化为一个C#对象:
  1. [/code] Csharp
  2. [code]// 定义一个与JSON结构对应的C#类
  3. public class User
  4. {
  5.     public string Name { get; set; }
  6.     public int Age { get; set; }
  7.     public bool IsAdmin { get; set; }
  8.     public string[] Skills { get; set; }
  9. }
  10. public static User ReadJsonFile()
  11. {
  12.     // JSON文件路径
  13.     string filePath = @"path\to\data.json";
  14.     try
  15.     {
  16.         // 打开并读取文件内容
  17.         using (StreamReader fileReader = new StreamReader(filePath))
  18.         {
  19.             // 从文件中获取JSON字符串
  20.             string jsonContent = fileReader.ReadToEnd();
  21.             // 使用JsonConvert.DeserializeObject反序列化JSON字符串为User对象
  22.             User user = JsonConvert.DeserializeObject<User>(jsonContent);
  23.             return user;
  24.         }
  25.     }
  26.     catch (FileNotFoundException ex)
  27.     {
  28.         Console.WriteLine($"Error: 文件 {filePath} 未找到。");
  29.         throw;
  30.     }
  31.     catch (Exception ex)
  32.     {
  33.         Console.WriteLine($"Error: 读取或解析JSON文件时发生错误。{ex.Message}");
  34.         throw;
  35.     }
  36. }
复制代码
代码注释说明



  • User 类定义了与JSON结构匹配的属性,以便反序列化时将JSON数据映射到相应的C#对象上。
  • ReadJsonFile 方法中:

    • 首先指定JSON文件的路径。
    • 利用StreamReader打开并读取文件内容到一个字符串变量jsonContent中。
    • 调用JsonConvert.DeserializeObject<User>方法,将JSON字符串转换为User范例的实例。
    • 利用try-catch语句捕捉可能发生的非常,如文件未找到或解析过程中出现的错误,并恰当处理。

三、写入JSON文件

步骤1:确保已引入所需命名空间(与读取部分相同)

  1. [/code] Csharp
  2. [code]using System;
  3. using System.IO;
  4. using Newtonsoft.Json;
复制代码
步骤2:编写写入JSON文件的代码

假设我们有一个User对象,想要将其序列化为JSON字符串并生存到名为output.json的文件中:
  1. [/code] Csharp
  2. [code]public static void WriteJsonFile(User user)
  3. {
  4.     // JSON文件输出路径
  5.     string outputPath = @"path\to\output.json";
  6.     try
  7.     {
  8.         // 将User对象序列化为JSON字符串
  9.         string jsonOutput = JsonConvert.SerializeObject(user, Formatting.Indented);
  10.         // 将JSON字符串写入文件
  11.         using (StreamWriter fileWriter = new StreamWriter(outputPath))
  12.         {
  13.             fileWriter.Write(jsonOutput);
  14.         }
  15.         Console.WriteLine("User data successfully written to JSON file.");
  16.     }
  17.     catch (Exception ex)
  18.     {
  19.         Console.WriteLine($"Error: 写入JSON文件时发生错误。{ex.Message}");
  20.         throw;
  21.     }
  22. }
复制代码
代码注释说明



  • WriteJsonFile 方法担当一个User对象作为参数。
  • 利用JsonConvert.SerializeObject方法将传入的User对象序列化为格式化的JSON字符串(Formatting.Indented参数使其具有良好的可读性)。
  • 创建一个StreamWriter对象,以指定的outputPath打开文件,然后将JSON字符串写入文件。
  • 同样利用try-catch语句捕捉并处理可能出现的非常。
总结

以上代码展示了如何利用C#配合Newtonsoft.Json库来读取和写入JSON文件。通过定义与JSON结构匹配的C#类,您可以轻松地将JSON数据与应用程序中的对象模子相互转换。在实际应用中,只需替换或扩展这些示例中的类与方法,即可适应您的详细业务需求。务必注意文件路径的精确性和文件操纵的权限题目,以及在处理非常时接纳恰当的恢复或关照机制。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

缠丝猫

金牌会员
这个人很懒什么都没写!

标签云

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