DotNet的JSON序列化与反序列化
JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。在现在的通信中,较多的采用JSON数据格式,JSON有两种表示结构,对象和数组,JSON 数据的书写格式是:名称/值对。
在vs解决方案中以前采用xml树的形式,组织项目的结构。在新的.net core中,项目的解决方案采用json作为项目的结构说明。
在.net的前后台数据交互中,采用序列化对象为json,前端ajax接受传输数据,反序列化为对象,在页面对数据进行渲染。有关json的相关内容就不再赘述,在.net中序列化的类主要采用DataContractJsonSerializer类。
现在提供一个较为通用的json的序列化和反序列化的通用方法。
1.json的序列化:
///<summary>///将对象序列化为JSON///</summary>///<typeparamname="T">序列化的类型</typeparam>///<paramname="t">需要序列化的对象</param>///<returns>序列化后的JSON</returns>publicstaticstringJsonSerializer<T>(Tt){if(t==null)thrownewArgumentNullException("t");stringjsonString;try{varser=newDataContractJsonSerializer(typeof(T));varms=newMemoryStream();ser.WriteObject(ms,t);jsonString=Encoding.UTF8.GetString(ms.ToArray());ms.Close();//替换Json的Date字符串conststringp=@"\\/Date\((\d+)\+\d+\)\\/";varmatchEvaluator=newMatchEvaluator(ConvertJsonDateToDateString);varreg=newSystem.Text.RegularExpressions.Regex(p);jsonString=reg.Replace(jsonString,matchEvaluator);}catch(Exceptioner){thrownewException(er.Message);}returnjsonString;}
2.json的反序列化:
///<summary>///将JSON反序列化为对象///</summary>publicstaticTJsonDeserialize<T>(stringjsonString){if(string.IsNullOrEmpty(jsonString))thrownewException(jsonString);//将"yyyy-MM-ddHH:mm:ss"格式的字符串转为"\/Date(1294499956278+0800)\/"格式conststringp=@"\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}";try{varmatchEvaluator=newMatchEvaluator(ConvertDateStringToJsonDate);varreg=newSystem.Text.RegularExpressions.Regex(p);jsonString=reg.Replace(jsonString,matchEvaluator);varser=newDataContractJsonSerializer(typeof(T));varms=newMemoryStream(Encoding.UTF8.GetBytes(jsonString));varobj=(T)ser.ReadObject(ms);returnobj;}catch(Exceptionex){thrownewException(ex.Message,ex);}}
以上是一个较为简单的json序列化和反序列化方法。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。