1、最近项目已经上线了,闲暇了几天想将JSON的序列化以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft已经做得很好了,但是我想封装一套为自己开发的项目使用,方便后期的扩展以及开发使用
2、什么是JSON?
JSON:JavaScript对象表示法(Javascript Object Notation)。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的不同之处没有结束标签更短 读写的速度更快,能够使用内建的,JavaScript eval()方法进行解析,使用数组,不使用保留字
5、为什么使用JSON?
对于AJAX应用程序来说,JSON比XML更快更易使用:使用XML读取XML文档使用XML DOM来循环遍历文档 ,读取值并存储在变量中
6、使用JSON
读取JSON字符串,用eval()处理JSON字符串,前端JS界面我们通常使用、JSON.parse()进行将对象或者数组字符串进行序列化进行JSON对象与JSON.stringify()
7、JSON的序列化以及反序列化
JSON的序列化和反序列化 ,我用using Newtonsoft.Json 之中的JsonConvert.SerializeObject() 和using System.Runtime.Serialization.Json;之中的Jil.JSON .Serialize()
当然这2个序列化的方式是相同 的。但是Jil.JSON.Serialize()序列化的效率确实比这个JsonConvert.SerializeObject()高的多了。在大量的数据的序列化的时候明显是可以看的出来的,所以我建议当序列化以及反序列化数据量非常大而且多的
时候强烈建议使用Jil.JSON.Serialize()来进行序列化对象以及反序列化对象等等
9、JSONHelp.cs代码如下:
using Newtonsoft.Json;
using System;
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;
namespace RapidDevelopmentFramework.Common
{
///<summary>
///JSON辅助类
///</summary>
public static class JSONHelper
{
///<summary>
///JSON 序列化的普通版本
///</summary>
///<typeparam name="T"></typeparam>
///<param name="_Object"></param>
///<returns></returns>
public static String ObjectToJSON<T>(this T_Object) where T:class
{
return JsonConvert.SerializeObject(_Object);
}
///<summary>
///JSON 序列化的标准版本
///</summary>
///<param name="_Object"></param>
///<returns></returns>
public static String ObjectToJSON(this Object _Object)
{
return JsonConvert.SerializeObject(_Object);
}
///<summary>
///JSON序列化的官方版本
///</summary>
///<typeparam name="T"></typeparam>
///<param name="_Object"></param>
///<returns></returns>
public static String ObjectToJSONOfficial<T>(this T_Object) where T:class
{
using (var TempMemoryStream=new MemoryStream())
{
var MyDataContractJsonSerializer=new DataContractJsonSerializer(typeof(T));
MyDataContractJsonSerializer.WriteObject(TempMemoryStream,_Object);
var MySerializationString=Encoding.UTF8.GetString(TempMemoryStream.ToArray());
return MySerializationString;
}
}
///<summary>
///JSON 序列化的Jill版本
///</summary>
///<typeparam name="T"></typeparam>
///<param name="_Object"></param>
///<returns></returns>
public static String ObjectToJSONJil<T>(this T_Object)where T:class
{
return Jil.JSON.Serialize(_Object,Jil.Options.ExcludeNullsIncludeInherited);
}
///<summary>
///JSON序列化的Jil版本,可以包含null
///</summary>
///<typeparam name="T"></typeparam>
///<param name="_Object"></param>
///<returns></returns>
public static String ObjectToJSONJilIncludeNulls<T>(this T_Object)where T:class
{
return Jil.JSON.Serialize(_Object,Jil.Options.IncludeInherited);
}
///<summary>
///JSON 的反序列化
///</summary>
///<typeparam name="T"></typeparam>
///<param name="_JSONString"></param>
///<returns></returns>
public static T JSONToObjectJSON<T>(this String _JSONString) where T:class
{
return JsonConvert.DeserializeObject<T>(_JSONString);
}
///<summary>
///JSON的反序列化的官方版本
///</summary>
///<typeparam name="T"></typeparam>
///<param name="_JSONString"></param>
///<returns></returns>
public static T JSONToObjectOfficial<T>(this String _JSONString) where T :class
{
using (var TempMemoryStream=new MemoryStream(Encoding.UTF8.GetBytes(_JSONString)))
{
var MyDataContractJsonSerializer=new DataContractJsonSerializer(typeof(T));
return (T)MyDataContractJsonSerializer.ReadObject(TempMemoryStream);
}
}
///<summary>
///JSON 的反序列化的官方版本
///</summary>
///<typeparam name="T"></typeparam>
///<param name="_JSONString"></param>
///<returns></returns>
public static T JSONToObjectJil<T>(thjs String _JSONString)where T:class
{
using(var InputString=new StringReader(_JSONString))
{
var ObjectResult=Jil.JSON.Deserialize<T>(InputString);
return ObjectResult;
}}
///<summary>
///JSON 的反序列的Jil版本,其中可以包含null
///</summary>
///<typeparam name="T"></typeparam>
///<param name="_JSONString"></param>
///<returns></returns>
public static T JSONToObjectJilIncludeNulls<T>(this String _JSONString) where T:class
{
using (var InputString=new StringReader(_JSONString))
{
var ObjectResult=Jil.JSON.Deserialize<T>(InputString,Jil.Options.IncludeInherited);
return ObjectResult;
}
}
}
}