Csharp/C#教程:c#数据的序列化和反序列化(推荐版)分享

开始用的.net自带的DataContractJsonSerializer进行序列化和反序列化,当代码写完以后,调试,我X(原谅我的脏话,因为确实让我生气),实体因为有[DataContractAttribute(IsReference=true)]这样一个属性,提示不能序列化,当然手改一下啦,改完以后,提示基类EntityObject的这个属性不可以
MYGod!!
后来也是因为DataContractJsonSerializer反序列化成集合的时候不好使,所以才下定决心废弃。采用了第三方的东西:传说中的Json.net
今天我也是要说这个组件序列化和反序列化的功能:
废话少说,线上model,作为提供数据的使用
代码如下:
publicclasswf_Task_Inbox
{
publicwf_Task_Inbox(stringid,stringname)
{
this.ID=id;
this.Name=name;
}
[DataMember]
publicstringID{get;set;}
[DataMember]
publicstringName{get;set;}
}

这里主要是作为测试时的数据源
接下来是序列化的代码,为了对比清楚,先奉上.net自带的方法:
代码如下:
///<summary>
///把一个对象转化为json格式数据
///</summary>
///<paramname=”entity”></param>
///<returns></returns>
publicstringEntityToJson(wf_Task_Inboxentity)
{
DataContractJsonSerializerserializer=newDataContractJsonSerializer(entity.GetType());
using(MemoryStreamstream=newMemoryStream())
{
serializer.WriteObject(stream,entity);
returnEncoding.UTF8.GetString(stream.ToArray());
}
}

返回的是个字符串,集合序列化的方法类似;
下边是json.net的代码:
JsonConvert.SerializeObject(list,Formatting.None);有且只有一行!!!!当然首先得添加json.net的引用
接下是反序列化的代码,.net自带:
代码如下:
///<summary>
///将json数据转化为对象
///</summary>
///<paramname=”entity”></param>
///<paramname=”jsonstring”></param>
///<returns></returns>
publicwf_Task_InboxJsonToEntity(stringjsonstring)
{
DataContractJsonSerializerserializer=newDataContractJsonSerializer(typeof(wf_Task_Inbox));
using(MemoryStreammStream=newMemoryStream(Encoding.UTF8.GetBytes(jsonstring)))
{
returnserializer.ReadObject(mStream)aswf_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
https://json.codeplex.com/Release/ProjectReleases.aspx 您可能感兴趣的文章:C#中JavaScriptSerializer帮助类用法实例C#实现json的序列化和反序列化实例代码c#对象反序列化与对象序列化示例详解深入理解C#序列化与反序列化的详解C#实现复杂XML的序列化与反序列化C#中Serializable序列化实例详解C#序列化与反序列化(Serialize,Deserialize)实例详解C#中datatable序列化与反序列化实例分析C#实现对象XML序列化的方法C#JavaScriptSerializer序列化时的时间处理详解

标签: 序列化 数据 c#

冒泡排序的三种实现方法

利用C++实现从std::string类型到bool型的转换

上述就是C#学习教程:c#数据的序列化和反序列化(推荐版)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/904287.html

(0)
上一篇 2021年10月21日
下一篇 2021年10月21日

精彩推荐