当前位置: 首页 > news >正文

C# Bin、XML、Json的序列化和反序列化

1)序列化前的准备

声明类:

[Serializable]public class BandItem{//JsonIgnore:当不想把某字段值序列化到Json时使用//[JsonIgnore]public string Name { get; set; }public string MusicStyle { get; set; }public string Masterpiece { get; set; }public BandItem(string name, string musicStyle, string masterpiece){Name = name;MusicStyle = musicStyle;Masterpiece = masterpiece;}}

初始化集合:

public List<BandItem> InitList(){List<BandItem> bandList = new List<BandItem>(){new BandItem("房东的猫","民谣","下一站茶山刘"),new BandItem("Beyond","摇滚","海阔天空")};return bandList;}
2)bin 文件的序列化和反序列化

写文件(序列化):


public void BinSerialize(List<BandItem> list){Stream stream = new FileStream("test.bin", FileMode.Create);BinaryFormatter bf = new BinaryFormatter();bf.Serialize(stream, list);stream.Close();}

读文件(反序列化):


public List<BandItem> BinDeserialize(string filePath){Stream stream = new FileStream(filePath, FileMode.Open);BinaryFormatter bf = new BinaryFormatter();List<BandItem> list = (List<BandItem>)bf.Deserialize(stream);stream.Close();return list;}
3)XML 的序列化和反序列化

序列化为 XML:


public string XMLSerialize(List<BandItem> list){System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(list.GetType());StringWriter sw = new StringWriter();x.Serialize(sw, list);string xml = sw.ToString();return xml;}

XML反序列化:


public List<BandItem> XMLDeserialize(string xml){System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(List<BandItem>));StringReader sr = new StringReader(xml);var list = (List<BandItem>)x.Deserialize(sr);return list;}
4)Json 的序列化和反序列化

需要一个程序包,在程序包管理控制台里输入安装命令:Install-Package Newtonsoft.Json

序列化为Json:


public string JsonSerialize(List<BandItem> list){string json = JsonConvert.SerializeObject(list);return json;}

Json反序列化:


public List<BandItem> JsonDeserialize(string json){List<BandItem> list = JsonConvert.DeserializeObject<List<BandItem>>(json);return list;}
5)序列化转换的模板

统一集合里的类型,编写成一个模板:

//对序列化和反序列化的处理public static class SerializeConver{//Bin文件的序列化public static bool BinSerializable<T>(T list,string newFilePath){try{Stream stream = new FileStream(newFilePath, FileMode.Create);BinaryFormatter bf = new BinaryFormatter();bf.Serialize(stream, list);stream.Close();return true;}catch(Exception ex){return false;}}//Bin文件的反序列化public static T BinDeserialize<T>(string sourceFilePath){Stream stream = new FileStream(sourceFilePath, FileMode.Open);BinaryFormatter bf = new BinaryFormatter();T list = (T)bf.Deserialize(stream);stream.Close();return list;}//可扩展其他格式的序列化和反序列模板...}

模板的使用:

var list = InitList();var isSerial = SerializeConver.BinSerializable<List<BandItem>>(list,"test.bin");var readList = SerializeConver.BinDeserialize<List<BandItem>>("test.bin");
http://www.lryc.cn/news/251187.html

相关文章:

  • mediapipe+opencv实现保存图像中的人脸,抹去其他信息
  • clickhouse的向量化执行
  • R语言实验三
  • springboot-mongodb-连接配置
  • 基于单片机的多功能视力保护器(论文+源码)
  • 如何保护 API 安全
  • 工业机器视觉megauging(向光有光)使用说明书(十五,轻量级的visionpro)
  • Linux e2fsck命令教程:如何检查和修复文件系统(附案例详解和注意事项)
  • TypeScript 的安装与使用
  • Git版本管理配置说明 - Visual Studio
  • Rust语言项目实战(四) - 界面绘制与渲染
  • 动态规划学习——回文串
  • 优化你的计算机性能:如何根据 CPU 占用率决定硬件升级
  • 探索低代码之路——JNPF
  • Day01 嵌入式 -----流水灯
  • Redis集群详解
  • 【随笔】个人面试纪录
  • Vue3的reactive、ref、toRef、toRefs用法以及区别
  • 微信小程序:input双向绑定
  • RT-Thread ADC_DMA
  • 生成带依赖Jar 包的两种常用方式:IDEA打包工具:Artifacts 和 maven-shade-plugin
  • idea 插件开发日志绑定问题
  • Elasticsearch(ES)概述
  • 网络入门---网络编程初步认识和实践
  • Linux系统安装Docker-根据官方教程教程(以Ubuntu为例)
  • 2023-12-03 LeetCode每日一题(可获得的最大点数)
  • 【唐山海德教育】安全员b证的考试科目
  • 吉他初学者学习网站搭建系列(4)——如何查询和弦图
  • 九章量子计算机:探索量子世界的革命性工具
  • 在 Linux 上修改 Oracle 控制文件、日志文件和数据文件的目录的脚本