常用的类库有:
JSON.NET,System.Text.Json,
DataContractJsonSerializer,JavaSerializer
1、JSON.NET
Json.Net是.netframework利用的比力频仍的Json序列化组件,Json.Net已经支持.netcore,最新版本已经到v13版,利用Json.NET类库必要引入的定名空间usingNewtonsoft.Json并必要下载nuget包。利用具体如下
//引用usingNewtonsoft.Json;
//公共的对象TestModel
publicclassTestModel
{
publicstringUserName{get;set;}
publicstringSex{get;set;}
publicstringphone{get;set;}
}
//main方法
publicstaticvoidMain
{
TestModelmodel=newTestModel;
model.UserName="张山";
model.Sex="男";
model.phone="135000";
//序列化
varstustrjson=JsonConvert.SerializeObject(model);
//反序列化
varfanstustr2=JsonConvert.DeserializeObjectTestModel(stustrjson);
stringstrContent1="对象序列化:"+strJson+"\n"+
"反序列化值:"+models.phone+""+models.Sex+""+models.UserName;
Console.WriteLine(strContent1);
}
2、System.Text.Json
微软在.NETCore3.0提供了一个名为System.Text.Json的全新定名空间,利用时必要引入的定名空间System.Text.Json,相比Json.Net听说性能进步不少。假如是在.NETCore3.0以上版本发起利用。具体利用如下
//引用usingSystem.Text.Json;
//公共的对象TestModel
publicclassTestModel
{
publicstringUserName{get;set;}
publicstringSex{get;set;}
publicstringphone{get;set;}
}
//main方法
publicstaticvoidMain
{
TestModelmodel=newTestModel;
model.UserName="张山";
model.Sex="男";
model.phone="135000";
//序列化默认序列化器,仅支持asnii编码格式,以提拔服从,利用时留意转码
stringstrJson=JsonSerializer.Serialize(model2);
//反序列化
varmodels=JsonSerializer.DeserializeTestModel(stuStr1);
stringstrContent1="对象序列化:"+strJson+"\n"+
"反序列化值:"+models.phone+""+models.Sex+""+models.UserName;
Console.WriteLine(strContent1);
}
留意:同时利用JSON.NET和System.Text.Json会存在引用辩论,利用时留意克制。
3、DataContractJsonSerializer
这是.NETFramwork3.5自带的JSON序列化内库,System.Runtime.Serialization.Json可很好的完成JSON的分析,但是利用不是太便利。具体利用如下
//利用DataContractJsonSerializer方式必要引入的定名空间,usingSystem.Runtime.Serialization.Json;
//公共的对象TestModel
publicclassTestModel
{
publicstringUserName{get;set;}
publicstringSex{get;set;}
publicstringphone{get;set;}
}
//main方法
publicstaticvoidMain
{
TestModelmodel=newTestModel;
model.UserName="张山";
model.Sex="男";
model.phone="135000";
//利用了JsonHelper类来实现具体方法
//序列化
stringstrJson=JsonHelper.ObjectToJson(model);
//Json反序列化对象
varmodels=JsonHelper.JsonToObjectTestModel(strJson);
stringstrContent="对象序列化:"+strJson+"\n"+
"反序列化值:"+models.phone+""+models.Sex+""+models.UserName;
Console.WriteLine(strContent);
}
//序列化Helper类publicstaticclassJsonHelper//引用1{#region第三种种DataContractJsonSerializer//注:可用[IgnoreDataMember]标记不序列化的属性//实体中的左券[DataMember],[DataContract],是利用DataContractJsonSerializer序列化和反序列化必须要加的//对于其他两种方式不必加,也可以的。publicstaticstringObjectToJson(objectobj){using(MemoryStreamstream=newMemoryStream){DataContractJsonSerializerjsonSerialize=newDataContractJsonSerializer(obj.GetType);jsonSerialize.WriteObject(stream,obj);returnEncoding.UTF8.GetString(stream.ToArray);}}//反序列化publicstaticTJsonToObjectT(stringstrJson){using(MemoryStreamstream=newMemoryStream(Encoding.UTF8.GetBytes(strJson))){DataContractJsonSerializerjsonSerialize=newDataContractJsonSerializer(typeof(T));return(T)jsonSerialize.ReadObject(stream);}}#endregion}
4、JavaSerializer
这个也是.NET3.5推出的JSON序列化和反序列化类库,支持3.5以上的.NETFramwork版本,不支持.NETCore以上版本。定名空间:System.Web..Serialization。具体利用如下:
//利用JavaSerializer方式必要引入的定名空间,System.Web..Serialization;//公共的对象TestModelpublicclassTestModel{publicstringUserName{get;set;}publicstringSex{get;set;}publicstringphone{get;set;}}//main方法publicstaticvoidMain{TestModelmodel=newTestModel;model.UserName="张山";model.Sex="男";model.phone="135000";//利用了JsonHelper类来实现具体方法//序列化stringstrJson=JsonJavaSerializer.ToJSON(model);//Json反序列化对象varmodels=JsonJavaSerializer.FromJSONTestModel(strJson);stringstrContent="对象序列化:"+strJson+"\n"+"反序列化值:"+models.phone+""+models.Sex+""+models.UserName;Console.WriteLine(strContent);Console.ReadLine;}
publicstaticclassJsonJavaSerializer{///summary///内存对象转换为json字符串////summary///paramname="obj"/param///returns/returnspublicstaticstringToJSON(objectobj){StringBuildersb=newStringBuilder;JavaSerializerjson=newJavaSerializer;json.Serialize(obj,sb);returnsb.ToString;}///summary///Json字符串转内存对象////summary///paramname="jsonString"/param///paramname="obj"/param///returns/returnspublicstaticTFromJSONT(stringjsonString){JavaSerializerjson=newJavaSerializer;returnjson.DeserializeT(jsonString);}}
以上4种方法根据项目环境利用,假如是.netcore3.0以下版本保举利用JSON.NET,.netcore3.0以上版本利用System.Text.Json。
假如你尚有别的转换方式,欢迎留言讨论。
引用1:
版权声明:本文泉源于网友网络或网友提供,仅供学习交换之用,假如有侵权,请转告版主大概留言,本公众号立即删除。
支持小薇
腾讯云福利:
云服务器2核2G4M入门体验低至65元/年,玩服务器的可以体验一下,更多欣赏
链接:https://url.cn/snZdv81r
关注公众号:DotNet开辟跳槽
以为不错,请点个在看呀
我要评论