json和xml的序列化及反序列化

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_44927626/article/details/89971300

实现了json和obj对象,xml和obj对象的序列化和反序列化,还有一个obj对象和二进制byte数组的序列化和反序列化。
代码如下:

   
        //二进制byte数组转obj
        static object BytesToObj(string path)
        {
            if (File.Exists(path))
            {
                BinaryFormatter bf = new BinaryFormatter();
                var buffStr = File.ReadAllText(path, Encoding.UTF8);
                var buff = buffStr.Split(',').Select(item => Convert.ToByte(item)).ToArray();
                using (MemoryStream ms2 = new MemoryStream(buff))
                {
                    var obj = bf.Deserialize(ms2);
                    return obj;
                }
            }
            else
            {
                Console.WriteLine("err");
                return null;
            }
        }
        //obj转二进制byte数组
        static void ObjToBytes(string path, object obj)
        {
            if (File.Exists(path))
            {
                BinaryFormatter bf = new BinaryFormatter();
                using (MemoryStream ms = new MemoryStream())
                {
                    bf.Serialize(ms, obj);
                    byte[] buff = ms.GetBuffer();
                    var buffStr = string.Join(",", buff);
                    File.WriteAllText(path, buffStr, Encoding.UTF8);
                }
            }
            else
            {
                Console.WriteLine("err");
            }
        }

        //obj转xml,编码格式utf8
        static void ObjToXml(string path, object obj)
        {
            XmlSerializer xs = new XmlSerializer(obj.GetType());
            using (StreamWriter sw = new StreamWriter(path, false, Encoding.UTF8))
            {
                xs.Serialize(sw, obj);
            }
        }

        //xml转obj,编码格式utf8及其泛型扩展
        static object XmlToObj(string path, Type t)
        {
            XmlSerializer xs = new XmlSerializer(t);
            using (StreamReader sr = new StreamReader(path, Encoding.UTF8))
            {
                return xs.Deserialize(sr);
            }
        }
        static T XmlToObj<T>(string path)
        {
            XmlSerializer xs = new XmlSerializer(typeof(T));
            using (StreamReader sr = new StreamReader(path, Encoding.UTF8))
            {
                return (T)xs.Deserialize(sr);
            }
        }
// Newtonsoft.Json添加外部json引用
	    //obj转json,编码utf8	
        static void ObjTojson(string path, object obj)
        {
            //path exit ?
            string jsonStr = JsonConvert.SerializeObject(obj);
            File.WriteAllText(path, jsonStr, Encoding.UTF8);
        }
       //json转utf8,编码utf8及其泛型扩展
        static object JsonToObj(string path, Type t)
        {
            string txt = File.ReadAllText(path, Encoding.UTF8);
            return JsonConvert.DeserializeObject(txt);
        }
        static T JsonToObj<T>(string path)
        {
            string txt = File.ReadAllText(path, Encoding.UTF8);
            return JsonConvert.DeserializeObject<T>(txt);
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_44927626/article/details/89971300