溫馨提示×

C#序列化與反序列化怎樣簡化代碼

c#
小樊
81
2024-10-24 10:57:25
欄目: 編程語言

在C#中,序列化和反序列化是將對象轉(zhuǎn)換為字節(jié)流以便存儲(chǔ)或傳輸,然后再將其還原為原始對象的過程。為了簡化代碼,你可以使用一些內(nèi)置的序列化方法和庫。

  1. 使用BinaryFormatter類進(jìn)行序列化和反序列化:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John", Age = 30 };

        // 序列化
        using (FileStream fileStream = new FileStream("person.bin", FileMode.Create))
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            binaryFormatter.Serialize(fileStream, person);
        }

        // 反序列化
        using (FileStream fileStream = new FileStream("person.bin", FileMode.Open))
        {
            BinaryFormatter binaryFormatter = new BinaryFormatter();
            Person deserializedPerson = (Person)binaryFormatter.Deserialize(fileStream);
            Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
        }
    }
}
  1. 使用Json.NET庫進(jìn)行序列化和反序列化(需要安裝Newtonsoft.Json NuGet包):
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        Person person = new Person { Name = "John", Age = 30 };

        // 序列化
        string json = JsonConvert.SerializeObject(person);
        Console.WriteLine($"Serialized JSON: {json}");

        // 反序列化
        Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json);
        Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");
    }
}

這兩種方法都可以簡化序列化和反序列化的代碼。但是,請注意,BinaryFormatter已經(jīng)被認(rèn)為是不安全的,因?yàn)樗菀资艿焦簟T谶@種情況下,建議使用Json.NET庫進(jìn)行序列化和反序列化。

0