ASP.Netのお勉強

クラスデータをシリアライズ・デシリアライズ@ASP.Net

クラスデータをシリアライズ、もしくはデシリアライズします。
シリアライズは、ソフトの内部で扱っているデータをファイルで保存したり、
ネットワークで送受信したりすることです。
デシリアライズは、その逆です。

最初に、クラスを作成します。
シリアライズするクラスには、「<Serializable()>」を付与します。

●class

<Serializable()> _
Public Class SerializeClass

    Public id As String
    Public name As String
    Public zipCd As String

End Class


画面を作成します。
ID、名前、郵便番号を入力するTextBoxを配置します。
シリアライズ、デシリアライズするボタンを設けます。

シリアライズ処理を記述します。
シリアライズしたいクラスを生成します。
画面の値を、作成したオブジェクトに格納します。

FileStreamを生成します。
BinaryFormatterを生成します。
BinaryFormatterのSerializeメソッドによりシリアライズします。
FileStreamとシリアライズしたいクラスのオブジェクトを渡します。

デシリアライズ処理を記述します。
FileStreamでデータが格納されているファイルを開きます。
BinaryFormatterのDeserializeメソッドにより、デシリアライズします。

●aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>クラスデータのシリアライズ・デシリアライズ</title>
</head>
<body>
<form id="form1" runat="server">
ID:<asp:TextBox ID="idTxt" runat="server"></asp:TextBox><br />
NAME:<asp:TextBox ID="nameTxt" runat="server"></asp:TextBox><br />
ZIPCODE:<asp:TextBox ID="zipCdTxt" runat="server"></asp:TextBox><br />
<asp:Button ID="Button1" runat="server" Text="シリアライズ" />
<asp:Button ID="Button2" runat="server" Text="デシリアライズ" /><br />
</form>
</body>
</html>



●aspx.vb

Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary

Partial Class _Default
    Inherits System.Web.UI.Page

    'シリアライズ処理
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click

        'シリアライズしたいクラスのオブジェクトを生成
        Dim serializeObj As SerializeClass = New SerializeClass()

        '画面の値を取得
        serializeObj.id = Me.idTxt.Text
        serializeObj.name = Me.nameTxt.Text
        serializeObj.zipCd = Me.zipCdTxt.Text

        Try
            'FileStream生成
            Using fileStream As FileStream = New FileStream("C:\data.txt", FileMode.Create)

                'System.Runtime.Serialization.Formatters.Binary
                Dim binaryFormatter As BinaryFormatter
                binaryFormatter = New BinaryFormatter()

                'シリアライズ
                binaryFormatter.Serialize(fileStream, serializeObj)
            End Using
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    'デシリアライズ処理
    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim serializeObj As New SerializeClass()

        Try
            'FileStream生成
            Using fileStream As FileStream = New FileStream("C:\data.txt", FileMode.Open)

                'System.Runtime.Serialization.Formatters.Binary
                Dim binaryFormatter As BinaryFormatter = New BinaryFormatter()

                'デシリアライズ
                serializeObj = CType(binaryFormatter.Deserialize(fileStream), SerializeClass)

                '画面に表示
                Me.idTxt.Text = serializeObj.id
                Me.nameTxt.Text = serializeObj.name
                Me.zipCdTxt.Text = serializeObj.zipCd

            End Using
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
End Sub
End Class

Copyright (C) ASP.Netのお勉強. All Rights Reserved.