2014-09-04 49 views
0

我有序列化和base64转换对象的功能,反之亦然。它使用Newtonsoft序列化和反序列化对象。代码的作品,但有没有办法做到这一点,而不使用牛顿软件?序列化和Base64转换,反之亦然vb.net

Public Shared Function SerializeAndBase64(ObjectToSerialize As Object) As ReturnObject(Of String) 
    Dim rtnObj As New ReturnObject(Of String) 
    Try 
     Dim SerializedObjectJson As String = Newtonsoft.Json.JsonConvert.SerializeObject(ObjectToSerialize) 
     Dim Base64String As String = Convert.ToBase64String(Encoding.UTF8.GetBytes(SerializedObjectJson)) 
     rtnObj.Item = Base64String 
    Catch ex As Exception 
     rtnObj.ErrorID = ErrorHandler.handleError(ex) 
     rtnObj.ErrorMessage = ex.Message 
     rtnObj.IsError = True 
    End Try 
    Return rtnObj 
End Function 

Public Shared Function DeserializeFromBase64(Of t)(Base64Json As String) As ReturnObject(Of t) 
    Dim rtnObj As New ReturnObject(Of t) 
    Try 


     Dim SerializedObjectJson As String = Encoding.UTF8.GetString(Convert.FromBase64String(Base64Json)) 
     Dim DeserializedObject As t = Newtonsoft.Json.JsonConvert.DeserializeObject(Of t)(SerializedObjectJson) 
     rtnObj.Item = DeserializedObject 
    Catch ex As Exception 
     rtnObj.ErrorID = ErrorHandler.handleError(ex) 
     rtnObj.ErrorMessage = ex.Message 
     rtnObj.IsError = True 
    End Try 
    Return rtnObj 
End Function 

在此先感谢。

+0

是的,还有其他序列化器,如果这是你问。 NET包含BinaryFomratter;还有Protobuf-net和MetSerializer – Plutonix 2014-09-04 11:35:38

+0

@Plutonix:[protobuf] +1(https://code.google.com/p/protobuf-net/wiki/Performance),同时检查[proto#](https:/ /code.google.com/p/protosharp/)。 – Neolisk 2014-09-04 14:51:31

+0

如果您需要字符串序列化,请选中[DataContractJsonSerializer类](http://msdn.microsoft.com/zh-cn/library/system.runtime.serialization.json.datacontractjsonserializer(v = vs.110).aspx)。 – Neolisk 2014-09-04 14:53:12

回答

0

你可以自己序列化/反序列化它。你只需要想出一种方法将所有内容保存到单个字符串中,或​​者如果需要,也可以将其保存为XML或甚至是字节数组。你的选择。

Public Class Class1 
    Public Property MyValue As String 

    Public Function Serialize() As String 
     Return MyValue 
    End Function 

    Public Sub Deserialize(ByVal value As String) 
     MyValue = value 
    End Sub 
End Class 
相关问题