Quantcast
Channel: Serialize an object to string - Stack Overflow
Viewing all articles
Browse latest Browse all 12

Answer by Marek Mucha for Serialize an object to string

$
0
0

Universal xml, json and bin serializer/deserializer from and to string

public static class SerializationHelper{    public static string Serialize<T>(this T toSerialize, OutTypeEnum oType)    {        if(oType == OutTypeEnum.JSON)            return SerializeJson<T>(toSerialize);        else if(oType == OutTypeEnum.XML)            return SerializeXml<T>(toSerialize);        else            return SerializeBin<T>(toSerialize);    }    public static T Deserialize<T>(this string toDeserialize, OutTypeEnum oType)    {        if (oType == OutTypeEnum.JSON)            return DeserializeJson<T>(toDeserialize);        else if (oType == OutTypeEnum.XML)            return DeserializeXml<T>(toDeserialize);        else            return DeserializeBin<T>(toDeserialize);    }    public static string SerializeXml<T>(this T toSerialize)    {        XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));        using (StringWriter textWriter = new StringWriter())        {            xmlSerializer.Serialize(textWriter, toSerialize);            return textWriter.ToString();        }    }    public static T DeserializeXml<T>(this string toDeserialize)    {        XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));        using (StringReader textReader = new StringReader(toDeserialize))        {            return (T)xmlSerializer.Deserialize(textReader);        }    }    public static string SerializeJson<T>(this T toSerialize) => JsonSerializer.Serialize(toSerialize);    public static T DeserializeJson<T>(this string toDeserialize) => (T)JsonSerializer.Deserialize(toDeserialize, typeof(T));    public static string SerializeBin<T>(this T toSerialize)    {        System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();        MemoryStream memStr = new MemoryStream();        try        {            bf.Serialize(memStr, toSerialize);            memStr.Position = 0;            return Convert.ToBase64String(memStr.ToArray());        }        finally        {            memStr.Close();        }    }    public static T DeserializeBin<T>(this string objectToDerialize)    {        System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();        byte[] byteArray = Convert.FromBase64String(objectToDerialize);        MemoryStream memStr = new MemoryStream(byteArray);        try        {            return (T)bf.Deserialize(memStr);        }        finally        {            memStr.Close();        }    }}public enum OutTypeEnum{    JSON,    XML,    BIN}

usage:

SomeClass obj = new SomeClass();string serializedObject = obj.Serialize(OutTypeEnum.JSON);SomeClass newObj = serializedObject.Deserialize<SomeClass>(OutTypeEnum.JSON);

Viewing all articles
Browse latest Browse all 12

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>