C# Json文件写入、读取 ,Json文件序列化、反序列化

server/2024/10/18 16:01:10/

在C#中,处理JSON文件的写入、读取、序列化和反序列化是一个常见的需求,特别是在需要与前端JavaScript应用进行数据交换或配置文件管理的场景中。下面将分别介绍如何使用.NET自带的System.Text.Json命名空间(从.NET Core 3.0开始引入)和广泛使用的第三方库Newtonsoft.Json(也称为Json.NET)来完成这些任务。

使用 System.Text.Json

序列化

序列化是将对象转换为JSON字符串的过程。

using System;
using System.Text.Json;public class Person
{public string Name { get; set; }public int Age { get; set; }
}class Program
{static void Main(string[] args){Person person = new Person { Name = "John Doe", Age = 30 };string jsonString = JsonSerializer.Serialize(person);Console.WriteLine(jsonString);// 写入到文件using (var writer = System.IO.File.CreateText("person.json")){writer.Write(jsonString);}}
}
反序列化

反序列化是将JSON字符串转换回对象的过程。

using System;
using System.Text.Json;
using System.IO;class Program
{static void Main(string[] args){string jsonString = File.ReadAllText("person.json");Person person = JsonSerializer.Deserialize<Person>(jsonString);Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");}
}

使用 Newtonsoft.Json (Json.NET)

序列化
using Newtonsoft.Json;
using System;public class Person
{public string Name { get; set; }public int Age { get; set; }
}class Program
{static void Main(string[] args){Person person = new Person { Name = "John Doe", Age = 30 };string jsonString = JsonConvert.SerializeObject(person);Console.WriteLine(jsonString);// 写入到文件System.IO.File.WriteAllText("person.json", jsonString);}
}
反序列化
using Newtonsoft.Json;
using System;
using System.IO;class Program
{static void Main(string[] args){string jsonString = File.ReadAllText("person.json");Person person = JsonConvert.DeserializeObject<Person>(jsonString);Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");}
}

注意事项

  • 选择库System.Text.Json 是.NET Core 3.0及更高版本的一部分,对于新项目,如果不需要Json.NET的高级功能,推荐使用它,因为它有更好的性能和更少的内存占用。
  • 异常处理:在实际应用中,我们可能需要添加异常处理逻辑来捕获并处理在序列化/反序列化过程中可能发生的错误,例如文件访问错误或JSON格式错误。
  • 性能:在处理大量数据或需要高性能的场景中,应测试并比较不同库的性能。
  • 版本兼容性:在使用第三方库时,注意库的版本与项目依赖之间的兼容性。

http://www.ppmy.cn/server/132797.html

相关文章

【Windows】【DevOps】Windows Server 2022 安装ansible,基于powershell实现远程自动化运维部署 入门到放弃!

目标服务器安装openssh server参考 【Windows】【DevOps】Windows Server 2022 在线/离线 安装openssh实现ssh远程登陆powershell、scp文件拷贝-CSDN博客 注意&#xff1a;Ansible不支持Windows操作系统部署 根据官方说明&#xff1a; Windows Frequently Asked Questions —…

Android从上帝视角来看PackageManagerService

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章&#xff0c;技术文章也可以有温度。 前言 阅读该篇之前&#xff0c;建议先阅读下面的系列文章&#xff1a; Android深入理解包管理–PackageManagerService和它的“小伙伴…

vim 12种模式的切换、常用命令集合

开发工具 每当别人问你&#xff1a; &#x1f4a6;你在什么环境下写代码、调试、编译、链接代码&#xff1f; &#x1f9d1;&#x1f3ff;Visual Studio 2022。VScode。IntelliJ IDEA。Eclipse… 对于上面这种环境&#xff0c;我们称之为集成开发环境&#xff08;IDE&#xf…

RHCE【时间服务器】

目录 NTP服务简介: Chrony简介&#xff1a; 一、软件安装 二、配置时间服务器 三、配置时间服务器的服务端和客户端&#xff0c;并使客户端与服务端的时间进行同步 &#xff08;1&#xff09;服务端配置&#xff1a; &#xff08;2&#xff09;客户端配置&#xff1a; &…

DolphinDB 2024 年度峰会回顾之分论坛:权益类数字基建与技术创新

在这个数字化时代&#xff0c;金融科技正以前所未有的速度发展&#xff0c;而权益类数字基建作为这一进程的核心支撑&#xff0c;正不断推动着金融领域的创新与变革。 DolphinDB 2024 年度峰会的分论坛 A 聚焦《权益类数字基建与技术创新》这一核心议题&#xff0c;邀请到了业…

C#高级编程核心知识点

1、函数参数 &#xff08;1&#xff09;按值传递参数 public void swap(int x, int y) &#xff08;2&#xff09;按引用传递参数 public void swap(ref int x, ref int y) 2、Null可空类型 &#xff08;1&#xff09;1个? ? 单问号用于对 int、double、bool 等无法直…

MySQL行格式

MySQL行格式 ✅ 四种行格式✅ 如何指定行格式&#xff1f;✅ 详细谈谈compact行格式 首先我们知道在MySQL中页是数据读写的最小单元&#xff0c;默认是16KB。页内的记录会组成一个单链表&#xff0c;每条记录就是一行数据&#xff0c;行格式决定了一行数据是如何进行物理存储的…

数据结构6——树与二叉树

在本专栏的前五篇中&#xff0c;我们学习了顺序表、链表、栈和队列&#xff0c;他们本质上都是线性表。有线性表就存在非线性表&#xff0c;现在我们就来学习一下结构更复杂的非线性表——树。 1. 树的概念与结构 1.1 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&…