1.将文件保存序列化至文档中,然后再读取:
//首先创建可序列化的实体类
[Serializable] public class Message { public string Name { get; set; } public int Age { get; set; } public DateTime Time { get; set; } public char Gender { get; set; } }
下面是序列化保存文件,以及反序列化读取文件
插入命名空间:using system.IO;
using system.Runtime.Serialization.Formatters.Binary;
1 private void btn_Click(object sender,EventArgs e){ 2 3 Message ms=new Message() 4 5 { 6 Name=this.txt_name.Text.trim().tostring(), 7 8 Age=Convert.Toint32(this.txt_age.Text.trim()), 9 10 Time=Convert.ToDateTime(this.txt_time.text.trim()), 11 12 Gender=Convert.Tochar(this.txt_gender.text.trim()) 13 }; 14 15 this.writerFile(ms); 17 } 19 private void writeFile(object Message){ 20 //创建序列化文件 22 FileStream fs=new FileStream("MessageFileName",FileMode.Create) 24 //创建二进制格式化器 26 BinaryFormatter bf=new BinaryFormatter(); 28 //将对象序列化 30 bf.Serialize(fs,Message); 32 fs.close(); 34 } 38 //反序列化 将文本信息反序列化读取出来 39 40 private void btn_read_Click( Object sender,EventArgs e){ 41 ReadFile(); 42 } 44 private void ReadFile(){ 45 //打开序列化文件 47 FileStream fs=new FileStream("MessageName",FileMode.Open) 49 BinaryFormatter bf=new BinaryFormatter(); 51 //将文件反序列化 53 Message ms=(Message)bf.Deserialize(fs); 55 //进行赋值 57 txt_name.text=ms.Name.tostring(); 59 fs.Close(); 60 }
2.对xml文件序列化和反序列化
公有属性:
public class RSPItemPicSet { // 操作返回xml示例,按这个xml格式定义可序列化的实体类 public static string str = @"<RSPItemPicSet> <functionID>setItemsPics</functionID> <time>2017-09-07 15:51:04</time> <ItemsIDList> <itemIDInfo> <itemID>43545346</itemID> <operCode>1</operCode> <operation>操作失败</operation> </itemIDInfo> <itemIDInfo> <itemID>1125507057</itemID> <operCode>0</operCode> <operation>操作成功</operation> </itemIDInfo> </ItemsIDList> </RSPItemPicSet>"; public string functionID { get; set; } public string time { get; set; } public List<itemIDInfo> ItemsIDList { get; set; } public class itemIDInfo { public string itemID { get; set; } public string operCode { get; set; } public string operation { get; set; } } } //插入命名空间 using system.io; using system.XML.Serialization //对XML文件进行反序列化 private void btn_read_click(object Sender,EventArgs e) { //创建序列化对象 XmkSerializer se=new XmlSerializer(typeof("类名")) //将xml格式字符串转为UTF8的格式编码 byte[] arry=Encoding.UTF8.GetBytes("XML格式字符串"); //指定流的对象 stream me=new MemoryStream(arry); //将xml字符串反序列化 RSPItemPicSet rsp=(RSPItemPicSet)se.DeSerialize(me); //给文本框赋值 TextBox1.text=resp.ItemsIDlist[0].itemID; } //对XML文件序列化 private void btn_Write_click(Object Sender,EventArgs e) { //将XML节点类实例化 RSPItemPicSet Rsp=new RspitemPicSet(); rep.functionID="一个值"; List<RSPItemPicSet.ItemIDInfo> itemidinfos=new List<RSPItemPicSet.ItemIdInfo>(); RSPItemPicSet.itemIDInfo idi=new RSPItemPicSet(); idi.operation="一个值"; idi.operCode="一个值"; idi.itemID="一个值"; itemidinfos.add(idi); rsp.ItemsIDlist=itemidinfos; //创建流 MemoryStream strem=new MemoryStream(); //创建序列化对象 XMLSerializer se=new XMLSerializer(typeof(RSPItemPicSet)); //使用流将文件格式化为xml文件,记录到流中 se.Serialize(stream,Rsp); stream.Position=0; //从字节流中读取文件 StreamReader sr=new StreamReader(stream); string str=sr.ReadToEnd(); sr.Dispose(); stream.Dispose();
3.对JSON进行序列化和反序列化
//实例化对象并赋值 Message mes=new Message(){Name="张三",age=14,time=convert.toin32("2019-05-16"),gender=convert.tochar("男")}; //JSON序列化 string strDate=JsonConvert.SerializeObject(mes); //JSON反序列化
public string Student()
{
public string ID{get;set;}
public string Name{get;set;}
}
string str = "{\"ID\":2,\"Name\":\"鲁智深\",\"Age\":230,\"Sex\":\"男\"}";
Student str=JsonConvert.DeserializeObject<Student>(str);
结果:str.id=2;