XmlJson序列化

Posted 我没有领悟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XmlJson序列化相关的知识,希望对你有一定的参考价值。

Xml序列化:

  public class XmlHelper 
    {
        private static string XmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationManager.AppSettings["XmlPath"]);

        public static T FileToObject<T>(string fileName) where T : new()
        {
            string fullName = Path.Combine(XmlPath, fileName);
            if (File.Exists(fullName))
            {
                using (Stream fStream = new FileStream(fullName, FileMode.Open, FileAccess.ReadWrite))
                {
                    XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
                    return (T)xmlFormat.Deserialize(fStream);
                }
            }
            else
            {
                return default(T);
            }
            
        }

        public static void ObjectToFile<T>(T obj, string fileName) where T : new()
        {
            string fullName = Path.Combine(XmlPath, fileName);
            string fullPath = Path.GetDirectoryName(fullName);
            if (!Directory.Exists(fullPath))
            {
                Directory.CreateDirectory(fullPath);
            }
            using (Stream fStream = new FileStream(fullName, FileMode.Create, FileAccess.ReadWrite))
            {
                XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
                xmlFormat.Serialize(fStream, obj);
            }
        }

        public static string ObjectToString<T>(T obj) where T : new()
        {
            XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType());
            Stream stream = new MemoryStream();
            xmlSerializer.Serialize(stream, obj);
            stream.Position = 0;
            StreamReader reader = new StreamReader(stream);
            return reader.ReadToEnd();
        }

        public static  T StringToObject<T>(string content) where T : new()
        {
            using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(content)))
            {
                XmlSerializer xmlFormat = new XmlSerializer(typeof(T));
                return (T)xmlFormat.Deserialize(stream);
            }
        }
    }

Json序列化:

/// <summary>
    /// Json序列化器
    /// </summary>
    public class JsonHelper 
    {
        private static string JsonPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ConfigurationManager.AppSettings["JsonPath"]);

        public static T FileToObject<T>(string fileName) where T : new()
        {
            string fullName = Path.Combine(JsonPath, fileName);
            if (File.Exists(fullName))
            {
                return StringToObject<T>(File.ReadAllText(fullName, Encoding.Default));
            }
            else
            {
                return default(T);
            }
        }

        public static void ObjectToFile<T>(T obj, string fileName) where T : new()
        {
            string fullName = Path.Combine(JsonPath, fileName);
            string fullPath = Path.GetDirectoryName(fullName);
            if (!Directory.Exists(fullPath))
            {
                Directory.CreateDirectory(fullPath);
            }
            using (FileStream fileStream = File.Create(fullName))
            {
                string text = JsonConvert.SerializeObject(obj);
                byte[] bytes = Encoding.Default.GetBytes(text);
                fileStream.Write(bytes, 0, bytes.Length);
            }
        }

        public static string ObjectToString<T>(T obj) where T : new()
        {
            return JsonConvert.SerializeObject(obj);
        }

        public static T StringToObject<T>(string content) where T : new()
        {
            return JsonConvert.DeserializeObject<T>(content);
        }
    }

 

以上是关于XmlJson序列化的主要内容,如果未能解决你的问题,请参考以下文章

xmljson反序列化得到相应的类

序列化: 一个老家伙的咸鱼翻身(Java对象XMLJSON反序列化)

XMLJSON

xStream转换XMLJSON

xStream完美转换XMLJSON

xStream完美转换XMLJSON(转)