C#でのオブジェクトのシリアル化方法をわかりやすく解説
C#では、オブジェクトをファイルに保存したり、ネットワーク経由で送信したりする際に「シリアル化(シリアライズ)」を行います。シリアル化とは、オブジェクトの状態をバイトストリームに変換する処理のことです。
BinaryFormatterを使ったシリアル化の手順
以下のコードでは、BinaryFormatter.Serialize(stream, reference) メソッドを使用して、サンプルオブジェクトをシリアル化しています。
1. コンストラクタの定義
まず、Employeeクラスに値を受け取るコンストラクタを定義します。
public Employee(int id, string name, int salary) {
this.id = id;
this.name = name;
this.salary = salary;
}2. ファイルストリームとBinaryFormatterの設定
次に、出力先となるFileStreamと、シリアル化を行うBinaryFormatterのインスタンスを作成します。
FileStream fStream = new FileStream("d:\\new.txt", FileMode.OpenOrCreate);
BinaryFormatter bFormat = new BinaryFormatter();3. オブジェクトの生成とシリアル化の実行
Employeeクラスのオブジェクトを生成し、Serializeメソッドを使ってストリームに書き込みます。
Employee emp = new Employee(001, "Jim", 30000); bFormat.Serialize(fStream, emp);
注意点:BinaryFormatterは非推奨
なお、BinaryFormatterにはセキュリティ上の脆弱性が指摘されており、.NET 5以降では非推奨となっています。新規開発では、JSON形式を扱うSystem.Text.Jsonや、XML形式を扱うXmlSerializerなど、より安全なシリアライザを使用することが推奨されます。
-
JavaScriptのオブジェクトメソッドとは?基本の考え方とアクセス方法を解説
JavaScriptにおけるメソッドとはJavaScriptにおける「メソッド」とは、オブジェクトに対して実行される動作(アクション)のことです。メソッドはオブジェクトのプロパティの一種であり、文字列や数値などのデータと同じように、オブジェクトの中に関数として格納されます。例えば、従業員(employee)オブジェクトを考えてみましょう。「名前:Amit」「部署:Marketing」「社員ID:001」といった情報がプロパティとして格納されているように、それらの情報を組み合わせて表示する処理も、detailsのようなメソッドとして持たせることができます。オブジェクトメソッドへのアクセス方法Ja
-
Pythonのmarshalモジュールで内部オブジェクトをシリアライズする方法
Python標準ライブラリのmarshalモジュールは、pickleモジュールと同様にオブジェクトのシリアライズ(直列化)機能を提供します。しかし、一般的なデータ永続化やソケット経由でのPythonオブジェクト送受信といった用途にはあまり向いていません。このモジュールが主に使われるのは、Python自身によるコンパイル済みPythonモジュール(.pycファイル)の読み書き処理です。実は、marshalモジュールが使用するデータ形式はPythonのバージョン間(マイナーバージョン間でさえも)互換性がないため、あるバージョンでコンパイルされたPythonスクリプト(.pycファイル)は、別のバー