脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页软件编程C#教程→ C#读写JSON文件

C#读写JSON文件详尽代码示例与注释解析

  更新时间:2024年06月18日 09:16:09  作者:墨瑾轩 
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等),下面这篇文章主要给大家介绍了关于C#读写JSON文件详尽代码示例与注释解析的相关资料,需要的朋友可以参考下

一、准备工作

在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:引入必要的命名空间

Csharp

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

步骤2:编写读取JSON文件的代码

假设我们有一个名为data.json的文件,其中包含一个表示用户信息的JSON对象:

Json

{
"Name": "John Doe",
"Age": 30,
"IsAdmin": false,
"Skills": ["C#", "JavaScript", "SQL"]
}

我们可以使用以下代码将其读取并反序列化为一个C#对象:

Csharp

// 定义一个与JSON结构对应的C#类
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public bool IsAdmin { get; set; }
public string[] Skills { get; set; }
}
public static User ReadJsonFile()
{
// JSON文件路径
string filePath = @"path\to\data.json";
try
{
// 打开并读取文件内容
using (StreamReader fileReader = new StreamReader(filePath))
{
// 从文件中获取JSON字符串
string jsonContent = fileReader.ReadToEnd();
// 使用JsonConvert.DeserializeObject反序列化JSON字符串为User对象
User user = JsonConvert.DeserializeObject<User>(jsonContent);
return user;
}
}
catch (FileNotFoundException ex)
{
Console.WriteLine($"Error: 文件 {filePath} 未找到。");
throw;
}
catch (Exception ex)
{
Console.WriteLine($"Error: 读取或解析JSON文件时发生错误。{ex.Message}");
throw;
}
}

代码注释说明

  • User 类定义了与JSON结构匹配的属性,以便反序列化时将JSON数据映射到相应的C#对象上。
  • ReadJsonFile 方法中:
    • 首先指定JSON文件的路径。
    • 使用StreamReader打开并读取文件内容到一个字符串变量jsonContent中。
    • 调用JsonConvert.DeserializeObject<User>方法,将JSON字符串转换为User类型的实例。
    • 使用try-catch语句捕获可能发生的异常,如文件未找到或解析过程中出现的错误,并适当处理。

三、写入JSON文件

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

Csharp

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

步骤2:编写写入JSON文件的代码

假设我们有一个User对象,想要将其序列化为JSON字符串并保存到名为output.json的文件中:

Csharp

public static void WriteJsonFile(User user)
{
// JSON文件输出路径
string outputPath = @"path\to\output.json";
try
{
// 将User对象序列化为JSON字符串
string jsonOutput = JsonConvert.SerializeObject(user, Formatting.Indented);
// 将JSON字符串写入文件
using (StreamWriter fileWriter = new StreamWriter(outputPath))
{
fileWriter.Write(jsonOutput);
}
Console.WriteLine("User data successfully written to JSON file.");
}
catch (Exception ex)
{
Console.WriteLine($"Error: 写入JSON文件时发生错误。{ex.Message}");
throw;
}
}

代码注释说明

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

总结

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

到此这篇关于C#读写JSON文件详尽代码示例与注释解析的文章就介绍到这了,更多相关C#读写JSON文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

    • 这篇文章主要介绍了C#中委托的+=和-=深入研究,本文深入研究+=和-=在执行时都做了哪些事情,加深对C#委托的理解和使用,需要的朋友可以参考下
      2015-01-01
    • 这篇文章主要介绍了C#调用C++动态库接口函数和回调函数方法,通过C++端编写接口展开内容,文章介绍详细具有一定的参考价值,需要的小伙伴可以参考一下
      2022-03-03
    • .NET创建、删除、复制文件夹及其子文件的实例方法,需要的朋友可以参考一下
      2013-03-03
    • 这篇文章主要介绍了C#实现的图片、string相互转换类分享,本文直接给出类代码,包含相互转换的方法,需要的朋友可以参考下
      2015-03-03
    • 这篇文章主要介绍了C#实现让ListBox适应最大Item宽度的方法,涉及ListBox控件的操作技巧,需要的朋友可以参考下
      2015-05-05
    • 这篇文章主要介绍了C#实现关机重启及注销实例代码,适合新手参考学习之用,需要的朋友可以参考下
      2014-07-07
    • 这篇文章主要为大家详细介绍了C#线程中弹窗的制作方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2022-02-02
    • 这篇文章主要为大家详细介绍了如何利用WPF和SkiaSharp实现自制弹幕效果,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的小伙伴可以了解一下
      2022-09-09
    • 这篇文章主要介绍了C#使用DES和AES实现加密解密功能,结合具体实例形式分析了C#实现DES与AES的加密解密功能实现技巧,需要的朋友可以参考下
      2017-06-06
    • 这篇文章主要介绍了C#中结构体和字节数组转换实现,本文直接给出了字节数组与结构体的转换代码,代码中包含详细注释,需要的朋友可以参考下
      2015-06-06

    最新评论