手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#数据的序列化和反序列化(推荐版)
c#数据的序列化和反序列化(推荐版)
摘要:开始用的.net自带的DataContractJsonSerializer进行序列化和反序列化,当代码写完以后,调试,我X(原谅我的脏话,因...

开始用的.net 自带的DataContractJsonSerializer进行序列化和反序列化,当代码写完以后,调试,我X(原谅我的脏话,因为确实让我生气),实体因为有[DataContractAttribute(IsReference=true )] 这样一个属性,提示不能序列化,当然手改一下啦,改完以后,提示基类EntityObject 的这个属性不可以

MY God!!

后来也是因为DataContractJsonSerializer 反序列化成集合的时候不好使,所以才下定决心废弃。采用了第三方的东西:传说中的Json.net

今天我也是要说这个组件序列化和反序列化的功能:

废话少说,线上model ,作为提供数据的使用

复制代码 代码如下:

public class wf_Task_Inbox

{

public wf_Task_Inbox(string id,string name)

{

this.ID = id;

this.Name = name;

}

[DataMember ]

public string ID { get; set; }

[DataMember]

public string Name{get ;set ;}

}

这里主要是作为测试时的数据源

接下来是序列化的代码,为了对比清楚,先奉上.net 自带的方法:

复制代码 代码如下:

/// <summary>

/// 把一个对象转化为json格式数据

/// </summary>

/// <param name="entity"></param>

/// <returns></returns>

public string EntityToJson(wf_Task_Inbox entity)

{

DataContractJsonSerializer serializer = newDataContractJsonSerializer(entity.GetType());

using (MemoryStream stream = new MemoryStream())

{

serializer.WriteObject(stream, entity);

return Encoding.UTF8.GetString(stream .ToArray ());

}

}

返回的是个字符串,集合序列化的方法类似;

下边是json.net的代码:

JsonConvert .SerializeObject (list, Formatting.None ); 有且只有一行!!!!当然首先得添加json.net的引用

接下是反序列化的代码,.net 自带:

复制代码 代码如下:

/// <summary>

/// 将json 数据转化为对象

/// </summary>

/// <param name="entity"></param>

/// <param name="jsonstring"></param>

/// <returns></returns>

public wf_Task_Inbox JsonToEntity(string jsonstring)

{

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(wf_Task_Inbox));

using (MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonstring)))

{

return serializer.ReadObject(mStream) as wf_Task_Inbox;

}

}

同时也是因为自带的木有泛型的扩展,所以不太喜欢,json.net的方法:

JsonConvert.DeserializeObject<List<wf_Task_Inbox>>(jsonstring) ; 这个是集合的,当然单个对象的怎么弄,你懂的,去掉《T》 就行了呗....

生成的序列化数据是标准的json格式:

[{"ID":"0","Name":"姓名:0"},{"ID":"1","Name":"姓名:1"},{"ID":"2","Name":"姓名:2"},{"ID":"3","Name":"姓名:3"},{"ID":"4","Name":"姓名:4"},{"ID":"5","Name":"姓名:5"},{"ID":"6","Name":"姓名:6"},{"ID":"7","Name":"姓名:7"},{"ID":"8","Name":"姓名:8"},{"ID":"9","Name":"姓名:9"}]

最后附上json.net的下载地址,下载包里有帮助和各个版本的json.net

http://json.codeplex.com/Release/ProjectReleases.aspx

【c#数据的序列化和反序列化(推荐版)】相关文章:

C# 格式化字符首字母大写的方法

c# 冒泡排序算法(Bubble Sort) 附实例代码

C#序列化成XML注意细节

C# 泛型类(函数)的实例化小例子

C#连接db2数据库的实现方法

C# mysql 插入数据,中文乱码的解决方法

根据灰度值填充字符-单文件单线程版

C#中控制远程计算机的服务的方法

C# Dynamic关键字之:调用属性、方法、字段的实现方法

C#运算符大全_各种运算符号的概述及作用

精品推荐
分类导航