首页 > 后端开发 > C++ > 如何在 C# 中序列化和反序列化对象?

如何在 C# 中序列化和反序列化对象?

DDD
发布: 2025-01-23 11:42:11
原创
286 人浏览过

How to Serialize and Deserialize Objects in C#?

C# 对象的保存和恢复:序列化与反序列化

序列化将数据存储为可移植格式,方便对象在不同应用、系统或机器间传输。

要序列化对象,必须使用 [Serializable] 属性标记,并包含无参数构造函数。 此外,[XmlIgnore][JsonIgnore] 属性可用于排除特定属性或字段。

示例

考虑以下 SomeClass

<code class="language-csharp">[Serializable]
public class SomeClass
{
    public string someProperty { get; set; }
}

SomeClass object1 = new SomeClass { someProperty = "someString" };</code>
登录后复制

保存到文件

  • 二进制序列化 (BinarySerialization):

    <code class="language-csharp">  BinaryFormatter binaryFormatter = new BinaryFormatter();
    
      using (Stream stream = File.Create("object1.bin"))
      {
          binaryFormatter.Serialize(stream, object1);
      }</code>
    登录后复制
  • XML 序列化 (XMLSerialization):

    <code class="language-csharp">  XmlSerializer serializer = new XmlSerializer(typeof(SomeClass));
    
      using (TextWriter writer = new StreamWriter("object1.xml"))
      {
          serializer.Serialize(writer, object1);
      }</code>
    登录后复制
  • JSON 序列化 (JsonSerialization):

    <code class="language-csharp">  using (StreamWriter writer = new StreamWriter("object1.json"))
      {
          writer.Write(JsonConvert.SerializeObject(object1));
      }</code>
    登录后复制

从文件恢复

  • 二进制反序列化 (BinaryDeserialization):

    <code class="language-csharp">  BinaryFormatter binaryFormatter = new BinaryFormatter();
    
      using (Stream stream = File.OpenRead("object1.bin"))
      {
          object1 = (SomeClass)binaryFormatter.Deserialize(stream);
      }</code>
    登录后复制
  • XML 反序列化 (XMLDeserialization):

    <code class="language-csharp">  XmlSerializer serializer = new XmlSerializer(typeof(SomeClass));
    
      using (TextReader reader = new StreamReader("object1.xml"))
      {
          object1 = (SomeClass)serializer.Deserialize(reader);
      }</code>
    登录后复制
  • JSON 反序列化 (JsonDeserialization):

    <code class="language-csharp">  using (StreamReader reader = new StreamReader("object1.json"))
      {
          object1 = JsonConvert.DeserializeObject<SomeClass>(reader.ReadToEnd());
      }</code>
    登录后复制

以上是如何在 C# 中序列化和反序列化对象?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板