基于Json序列化和反序列化通用的封装完整代码
1.最近项目已经上线了,闲暇了几天想将JSON的序列化以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft已经做的很好了。但是我想封装一套为自己开发的项目使用。方便后期的扩展以及开发使用。
2.什么是JSON?
JSON:JavaScript对象表示法(JavaScriptObjectNotation)。JSON是存储和交换文本信息的语法。类似XML。JSON比XML更小、更快,更易解析。 现在开发Web应用程序JSON是必不可少的。JSON是轻量级的文本数据交换格,JSON独立于语言,JSON具有自我描述性,更易理解 ,JSON使用JavaScript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库支持许多不同的编程语言。
3.JSON-转换为JavaScript对象
JSON文本格式在语法上与创建JavaScript对象的代码相同。由于这种相似性,无需解析器,JavaScript程序能够使用内建的eval()函数,用JSON数据来生成原生的JavaScript对象。
4.类似XML
JSON是纯文 JSON具有自我描述的特性,JSON具有层级结构(值中存在值)JSON可通过JavaScript进行解析 JSON数据可使用AJAX进行传输 相比XML的不同之处没有结束标签更短读写的速度更快能够使用内建的,JavaScripteval()方法进行解析,使用数组 ,不使用保留字
5.为什么使用JSON?
对于AJAX应用程序来说,JSON比XML更快更易使用:使用XML读取XML文档使用XMLDOM来循环遍历文档 读取值并存储在变量中
6.使用JSON
读取JSON字符串 用eval()处理JSON字符串 前端JS界面我们通常使用、JSON.parse() 进行将对象或者数组字符串进行序列化进行JSON 对象与JSON.stringify()
7.JSON的序列化以及反序列化
JSON的序列化和反序列化 我用usingNewtonsoft.Json之中的JsonConvert.SerializeObject() 和usingSystem.Runtime.Serialization.Json; 之中的Jil.JSON.Serialize()
当然这2个序列化的方式是相同的。但是Jil.JSON.Serialize() 序列化的效率确实比这个JsonConvert.SerializeObject()高的多了。在大量的数据的序列化的时候明显是可以看的出来的。所以
我建议当序列化以及反序列化数据量非常大而且多的时候强烈建议使用Jil.JSON.Serialize()来进行序列化对象以及反序列化对象等等。
9.JSONHelp.cs 代码如下:
usingNewtonsoft.Json;
usingSystem;
usingSystem.IO;
usingSystem.Runtime.Serialization.Json;
usingSystem.Text;
/************************************************
作者:LowKeyTranscend
说明:通用管理里面的JSON的序列化和反序列化
版本号:V1.0
创建日期:2017年6月22日星期四
*****************************************************/
namespaceRapidDevelopmentFramework.Common
{
///
///JSON辅助类
/// 
publicstaticclassJSONHelper
{
///
///JSON序列化的普通版本
/// 
///
///
/// 
publicstaticStringObjectToJSON(thisT_Object)whereT:class
{
returnJsonConvert.SerializeObject(_Object);
}
///
///JSON序列化的标准版本
/// 
///
/// 
publicstaticStringObjectToJSON(thisObject_Object)
{
returnJsonConvert.SerializeObject(_Object);
}
///
///JSON序列化的官方版本
/// 
///
///
/// 
publicstaticStringObjectToJSONOfficial(thisT_Object)whereT:class
{
using(varTempMemoryStream=newMemoryStream())
{
varMyDataContractJsonSerializer=newDataContractJsonSerializer(typeof(T));
MyDataContractJsonSerializer.WriteObject(TempMemoryStream,_Object);
varMySerializationString=Encoding.UTF8.GetString(TempMemoryStream.ToArray());
returnMySerializationString;
}
}
///
///JSON序列化的Jil版本
/// 
///
///
/// 
publicstaticStringObjectToJSONJil(thisT_Object)whereT:class
{
returnJil.JSON.Serialize(_Object,Jil.Options.ExcludeNullsIncludeInherited);
}
///
///JSON序列化的Jil版本可以包含null
/// 
///
///
/// 
publicstaticStringObjectToJSONJilIncludeNulls(thisT_Object)whereT:class
{
returnJil.JSON.Serialize(_Object,Jil.Options.IncludeInherited);
}
///
///JSON的反序列化
/// 
///
///
/// 
publicstaticTJSONToObjectJSON(thisString_JSONString)whereT:class
{
returnJsonConvert.DeserializeObject(_JSONString);
}
///
///JSON的反序列化的官方版本
/// 
///
///
/// 
publicstaticTJSONToObjectOfficial(thisString_JSONString)whereT:class
{
using(varTempMemoryStream=newMemoryStream(Encoding.UTF8.GetBytes(_JSONString)))
{
varMyDataContractJsonSerializer=newDataContractJsonSerializer(typeof(T));
return(T)MyDataContractJsonSerializer.ReadObject(TempMemoryStream);
}
}
///
///JSON的反序列化的官方版本
/// 
///
///
/// 
publicstaticTJSONToObjectJil(thisString_JSONString)whereT:class
{
using(varInputString=newStringReader(_JSONString))
{
varObjectResult=Jil.JSON.Deserialize(InputString);
returnObjectResult;
}
}
///
///JSON的反序列化的Jil版本其中可以包含null
/// 
///
///
/// 
publicstaticTJSONToObjectJilIncludeNulls(thisString_JSONString)whereT:class
{
using(varInputString=newStringReader(_JSONString))
{
varObjectResult=Jil.JSON.Deserialize(InputString,Jil.Options.IncludeInherited);
returnObjectResult;
}
}
}
}                            
以上所述是小编给大家介绍的基于Json序列化和反序列化通用的封装完整代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!