版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
实现了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);
}
}