XML和JSON序列化以及反序列化

it2022-05-05  133

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;

 

转载于:https://www.cnblogs.com/skyphs/p/10874704.html


最新回复(0)