C# でのシリアル化と逆シリアル化の例
⚡ スマートサマリー
C# のシリアル化は、オブジェクトをバイトストリームに変換してファイルに保存したり、アプリケーション間で送信したりできるようにします。逆シリアル化は、オブジェクトを再構築します。ここでは、例を交えながらオブジェクトのシリアル化と逆シリアル化の方法を学びます。

C# でのシリアル化と逆シリアル化
オブジェクトに関するデータをあるアプリケーションから別のアプリケーションに送信する必要がある場合は、シリアライゼーションとデシリアライゼーションの概念が使用されます。シリアライゼーションは、アプリケーションデータをファイルにエクスポートするために使用されます。宛先アプリケーションは、デシリアライゼーションを使用して、tracアプリケーションから取得したデータを、今後の利用のために保存する。
シリアル化は、C# クラス オブジェクトをファイルに書き込むかシリアル化する概念です。 Tutorial という C# クラスがあるとします。 そして、クラスには ID とチュートリアル名の 2 つのプロパティがあります。
シリアル化を使用すると、Tutorial クラスのデータ プロパティをファイルに直接書き込むことができます。 逆シリアル化は、ファイルからデータを読み取り、Tutorial オブジェクトを再度構築するために使用されます。
C#におけるシリアル化の種類
C# は複数のシリアル化形式をサポートしており、データの使用場所に応じて適切な形式を選択します。主な形式は以下のとおりです。
- バイナリシリアル化 オブジェクトをコンパクトなバイナリストリームに変換します。高速ですが、人間が読みやすい形式ではなく、.NETに依存しています。
- XMLシリアル化 XmlSerializerクラスを使用して、オブジェクトのパブリックプロパティを読み取り可能なXMLファイルに書き込みます。
- JSONシリアル化 System.Text.Json または Newtonsoft.Json を使用して、Web API で最も一般的な形式である軽量 JSON を生成します。
- SOAPシリアル化 古いWebサービス向けにデータをSOAPメッセージとしてフォーマットします。
C# でオブジェクトをシリアル化する方法
これを実現する方法の例を見てみましょう。
この例では、コード内で以下の高レベルの手順を実行します。
- ID と Name という 2 つのプロパティを持つ Tutorial という名前のクラスを作成します。
- 次に、クラスからオブジェクトを作成し、ID プロパティに値「1」を割り当て、name プロパティに値「.Net」を割り当てます。
- 次に、シリアル化を使用して、上記のオブジェクトを Example.txt というファイルにシリアル化します。
- 最後に、逆シリアル化を使用してファイルからオブジェクトを逆シリアル化し、コンソールに値を表示します。
コンソール アプリケーションの Program.cs ファイルに以下のコードを入力します。
ステップ1) クラスを追加します。
最初のステップは、シリアル化に使用されるクラスを追加することです。
Code 説明:-
- シリアル化が必要なクラスには[Serializable]属性が必要です。 これは C# のキーワードです。 このキーワードは Tutorial クラスに付加されます。 この属性を指定しないと、クラスをシリアル化しようとするとエラーが発生します。
- 次にシリアル化するクラスの定義です。 ここでは「Tutorial」というクラスを定義し、2 つのプロパティ (XNUMX つは「ID」、もう XNUMX つは「Name」) を提供します。
ステップ2) オブジェクトを作成します。
このステップでは、まず Tutorial クラスのオブジェクトを作成し、それを Example.txt というファイルにシリアル化します。
Code 説明:-
- まず、Tutorial クラスのオブジェクトを作成します。 次に、値「1」を ID に割り当て、「.net」を name プロパティに割り当てます。
- 次に、オブジェクトをシリアル化またはバイナリ形式に変換するために使用されるフォーマッタ クラスを使用します。 シリアル化中のファイル内のデータはバイナリ形式で行われます。 次に、ファイル ストリーム オブジェクトを作成します。 ファイル ストリーム オブジェクトは、書き込み目的でファイル Example.txt を開くために使用されます。 キーワード FileMode.Create および FileMode.Write は、ファイルを書き込み目的で開く必要があることを明確に示すために使用されます。
- 最後に、Serialize メソッドを使用してバイナリ データをファイルに転送します。 次に、書き込みが行われたため、ストリームを閉じます。 操作 完了です。
ステップ3) 逆シリアル化を使用します。
最後に、データがファイル内に存在することを確認するために、逆シリアル化を使用してファイルからオブジェクトを逆シリアル化します。
using System; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; namespace DemoApplication { [Serializable] class Tutorial { public int ID; public String Name; static void Main(string[] args) { Tutorial obj = new Tutorial(); obj.ID = 1; obj.Name = ".Net"; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write); formatter.Serialize(stream, obj); stream.Close(); stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read); Tutorial objnew = (Tutorial)formatter.Deserialize(stream); Console.WriteLine(objnew.ID); Console.WriteLine(objnew.Name); Console.ReadKey(); } } }
Code 説明:-
- オブジェクトを作成します。」流れ」をクリックして、ファイル Example.txt を読み取り専用モードで開きます。
- 次に、オブジェクトを逆シリアル化するために使用されるフォーマッタ クラスを使用します。このクラスは Example.txt ファイルに保存されています。 返されるオブジェクトはオブジェクト objnew に設定されます。
- 最後に、「ID」プロパティと「name」プロパティを使用して、オブジェクト「objnew」のプロパティをコンソールに表示します。
上記のコードを設定し、プロジェクトを実行すると、 Visual Studioの、以下の出力が得られます。
出力:-
上記の出力から、ファイルの値が適切に逆シリアル化され、コンソールに表示されていることがわかります。
C#におけるJSONシリアル化
JSONは、現代のアプリケーションやWeb APIで最も広く使用されているフォーマットです。 System.Text.Json namespace は、以下に示すように、単一のメソッド呼び出しでオブジェクトのシリアル化と逆シリアル化を行います。
using System; using System.Text.Json; namespace DemoApplication { class Tutorial { public int ID { get; set; } public string Name { get; set; } } class Program { static void Main(string[] args) { Tutorial obj = new Tutorial { ID = 1, Name = ".Net" }; string json = JsonSerializer.Serialize(obj); Console.WriteLine(json); Tutorial objnew = (Tutorial)JsonSerializer.Deserialize(json, typeof(Tutorial)); Console.WriteLine(objnew.Name); Console.ReadKey(); } } }
出力:
{"ID":1,"Name":".Net"}
.Net




