XML和JSON序列化以及反序列化
程序员文章站
2022-03-20 11:58:26
1.将文件保存序列化至文档中,然后再读取: //首先创建可序列化的实体类 下面是序列化保存文件,以及反序列化读取文件 2.对xml文件序列化和反序列化 公有属性: 3.对JSON进行序列化和反序列化 public string Student(){ public string ID{get;set; ......
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;
推荐阅读
-
IOS开发(74)之把 Array 和 Dictionaries 序列化成 JSON 对象
-
C#使用Json.Net进行序列化和反序列化及定制化
-
JSON键值对序列化和反序列化解析
-
Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全
-
C# .NET的BinaryFormatter、protobuf-net、Newtonsoft.Json以及自己写的序列化方法序列化效率和序列化后的文件体积大小对比
-
Python-序列化\反序列化以及json、pickle,hashlib模块
-
PHP的serialize序列化数据以及JSON格式化数据分析
-
SpringBoot整合SpringMVC之自定义JSON序列化器和反序列化器
-
详解 C# 中XML对象的序列化和反序列化
-
JS对象序列化成json数据和json数据转化为JS对象的代码