ホームページ > バックエンド開発 > C++ > バイナリ、XML、および JSON シリアル化を使用して .NET でシリアル化可能なオブジェクトを永続化および復元する方法

バイナリ、XML、および JSON シリアル化を使用して .NET でシリアル化可能なオブジェクトを永続化および復元する方法

Barbara Streisand
リリース: 2025-01-23 11:47:12
オリジナル
278 人が閲覧しました

How to Persist and Restore Serializable Objects in .NET Using Binary, XML, and JSON Serialization?

.NET でのバイナリ、XML、および JSON シリアル化を使用したシリアル化可能なオブジェクトの永続化と復元

.NET のオブジェクトのシリアル化により、オブジェクトを永続ストレージに保存し、後で元の形式で取得できるようになります。オブジェクトをシリアル化するには、そのクラスに [Serializable] のマークを付ける必要があります。このアノテーションは、バイナリ シリアル化を使用する場合には重要ですが、XML または JSON シリアル化では必要ありません。

次に、バイナリ、XML、および JSON シリアル化の関数の例を示します。

バイナリシリアル化:

<code class="language-csharp">public static void WriteToBinaryFile<T>(string filePath, T objectToWrite, bool append = false)
{
    using (Stream stream = File.Open(filePath, append ? FileMode.Append : FileMode.Create))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        binaryFormatter.Serialize(stream, objectToWrite);
    }
}

public static T ReadFromBinaryFile<T>(string filePath)
{
    using (Stream stream = File.Open(filePath, FileMode.Open))
    {
        var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
        return (T)binaryFormatter.Deserialize(stream);
    }
}</code>
ログイン後にコピー

XML シリアル化:

<code class="language-csharp">public static void WriteToXmlFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
    TextWriter writer = null;
    try
    {
        var serializer = new XmlSerializer(typeof(T));
        writer = new StreamWriter(filePath, append);
        serializer.Serialize(writer, objectToWrite);
    }
    finally
    {
        if (writer != null)
            writer.Close();
    }
}

public static T ReadFromXmlFile<T>(string filePath) where T : new()
{
    TextReader reader = null;
    try
    {
        var serializer = new XmlSerializer(typeof(T));
        reader = new StreamReader(filePath);
        return (T)serializer.Deserialize(reader);
    }
    finally
    {
        if (reader != null)
            reader.Close();
    }
}</code>
ログイン後にコピー

JSON シリアル化 (Newtonsoft.Json NuGet パッケージが必要):

<code class="language-csharp">public static void WriteToJsonFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
    TextWriter writer = null;
    try
    {
        var contentsToWriteToFile = JsonConvert.SerializeObject(objectToWrite);
        writer = new StreamWriter(filePath, append);
        writer.Write(contentsToWriteToFile);
    }
    finally
    {
        if (writer != null)
            writer.Close();
    }
}

public static T ReadFromJsonFile<T>(string filePath) where T : new()
{
    TextReader reader = null;
    try
    {
        reader = new StreamReader(filePath);
        var fileContents = reader.ReadToEnd();
        return JsonConvert.DeserializeObject<T>(fileContents);
    }
    finally
    {
        if (reader != null)
            reader.Close();
    }
}</code>
ログイン後にコピー

使用例:

<code class="language-csharp">// 将someClass变量的内容写入文件。
WriteToBinaryFile<SomeClass>("C:\someClass.txt", object1);

// 将文件内容读回变量。
SomeClass object1 = ReadFromBinaryFile<SomeClass>("C:\someClass.txt");</code>
ログイン後にコピー

以上がバイナリ、XML、および JSON シリアル化を使用して .NET でシリアル化可能なオブジェクトを永続化および復元する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート