序列化 根级别上的数据无效。 行 1,位置 1

最近在做反序列化的时候遇到过     根级别上的数据无效。 行 1,位置 1

最后发现是在序列化的时候代码不标准所致

序列化代码:

    ''' <summary>
    ''' 将Pack文件保存到本地文件,并返回文件名
    ''' </summary>
    ''' <param name="pk">List(Of PackageData)</param>
    ''' <param name="fileName">fileName</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function SavePackToFile(ByVal pk As List(Of PackageData), Optional ByVal fileName As String = "") As String
        Try
            If fileName.Trim.Length <= 0 Then fileName = Guid.NewGuid().ToString + ".pak"
            Dim destFile As String = AppDomain.CurrentDomain.BaseDirectory + "\Download\" + fileName

            Dim ser As New DataContractSerializer(GetType(List(Of PackageData)))
            Dim wx As New Xml.XmlTextWriter(destFile, System.Text.Encoding.UTF8)
            ser.WriteObject(wx, pk)
            wx.Close()
        Catch ex As Exception
            Throw ex
        End Try
        Return fileName
    End Function

反序列化:

    ''' <summary>
    ''' 反序列化PackageData
    ''' </summary>
    ''' <param name="s"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Function Deserialize(ByVal s As String) As List(Of PackageData)
        Try

            Dim txter As TextReader = New StringReader(s.Trim())
            Dim reader As New XmlTextReader(txter)

            Dim ser As New DataContractSerializer(GetType(List(Of PackageData)))
            Dim datas As List(Of PackageData) = CType(ser.ReadObject(reader), List(Of PackageData))
            reader.Close()
            txter.Close()
            Return datas
        Catch ex As Exception
            Throw ex
        End Try
        Return Nothing
    End Function

这样之后不会再报错了。


<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值