在.NET中使用Newtonsoft.Json轉(zhuǎn)換,讀取,寫入的方法介紹
更新時(shí)間:2012年08月01日 15:10:58 作者:
Newtonsoft.Json.JsonConvert類是非微軟提供的一個(gè)JSON序列化和反序列的開源免費(fèi)的類庫
全局引用
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
//把Json字符串反序列化為對(duì)象
目標(biāo)對(duì)象 = JavaScriptConvert.DeserializeObject(JSON字符串, typeof(目標(biāo)對(duì)象));
//把目標(biāo)對(duì)象序列化為Json字符串
stringJson字符串 = JavaScriptConvert.SerializeObject(目標(biāo)對(duì)象);
1、引用Newtonsoft.Json.dll;
2、在項(xiàng)目中添加引用;
序列化和反序列在.net項(xiàng)目中,簡(jiǎn)單示例
Productproduct = newProduct();
product.Name = "Apple";
product.Expiry = newDateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = newstring[] { "Small", "Medium", "Large"};
stringoutput = JavaScriptConvert.SerializeObject(product);
注意:
一、如果需要序列化實(shí)體
1、類名必須添加[DataContract]標(biāo)記;
2、類屬性添加[DataMember]標(biāo)記;
二、如果有不需要序列化的字段,可以給該字段添加[JsonIgnore]標(biāo)記
在Newtonsoft這個(gè)類庫中對(duì)于日期的序列化有多種方式,可以類的DataTime成員添加上對(duì)應(yīng)的標(biāo)記,這樣在進(jìn)行序列化和反序列化時(shí)就會(huì)按照指定的方式進(jìn)行,
在本例中User類(如下類)的CreateDate屬性添加的屬性是[JsonConverter(typeof(IsoDateTimeConverter))],而Birthday屬性添加的屬性是[JsonConverter(typeof(JavaScriptDateTimeConverter))],從序列化的結(jié)果可以看出來它們最終的表現(xiàn)形式并不一樣。
[DataContract]
public class User
{
/// <summary>
/// 編號(hào)
/// </summary>
[DataMember]
public int UserId { get; set; }
/// <summary>
/// 用戶名
/// </summary>
[DataMember]
public string UserName { get; set; }
/// <summary>
/// 創(chuàng)建時(shí)間
/// </summary>
[DataMember]
[JsonConverter(typeof(IsoDateTimeConverter))]
public DateTime CreateDate { get; set; }
/// <summary>
/// 生日
/// </summary>
[DataMember]
[JsonConverter(typeof(JavaScriptDateTimeConverter))]
public DateTime Birthday { get; set; }
/// <summary>
/// 相關(guān)URL
/// </summary>
[DataMember]
public List<string> Urls { get; set; }
/// <summary>
/// 薪水
/// </summary>
[ScriptIgnore]//使用JavaScriptSerializer序列化時(shí)不序列化此字段
[IgnoreDataMember]//使用DataContractJsonSerializer序列化時(shí)不序列化此字段
[JsonIgnore]//使用JsonConvert序列化時(shí)不序列化此字段
public int Salary { get; set; }
/// <summary>
/// 權(quán)利級(jí)別
/// </summary>
[DataMember]
public Priority Priority { get; set; }
public User()
{
Urls = new List<string>();
}
}
其他:
Newtonsoft.Json.JsonConvert類是非微軟提供的一個(gè)JSON序列化和反序列的開源免費(fèi)的類庫(下載網(wǎng)址是:http://www.codeplex.com/json/),它提供了更靈活的序列化和反序列化控制,并且如果你的開發(fā)環(huán)境使用的是.NET Framework3.5及以后版本的話,你就可以使用Linq to JSON,這樣一來面對(duì)一大段的數(shù)據(jù)不必一一解析,你可以使用Linq to JSON解析出你關(guān)心的那部分即可,非常方便。
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
//把Json字符串反序列化為對(duì)象
目標(biāo)對(duì)象 = JavaScriptConvert.DeserializeObject(JSON字符串, typeof(目標(biāo)對(duì)象));
//把目標(biāo)對(duì)象序列化為Json字符串
stringJson字符串 = JavaScriptConvert.SerializeObject(目標(biāo)對(duì)象);
1、引用Newtonsoft.Json.dll;
2、在項(xiàng)目中添加引用;
序列化和反序列在.net項(xiàng)目中,簡(jiǎn)單示例
復(fù)制代碼 代碼如下:
Productproduct = newProduct();
product.Name = "Apple";
product.Expiry = newDateTime(2008, 12, 28);
product.Price = 3.99M;
product.Sizes = newstring[] { "Small", "Medium", "Large"};
stringoutput = JavaScriptConvert.SerializeObject(product);
注意:
一、如果需要序列化實(shí)體
1、類名必須添加[DataContract]標(biāo)記;
2、類屬性添加[DataMember]標(biāo)記;
二、如果有不需要序列化的字段,可以給該字段添加[JsonIgnore]標(biāo)記
在Newtonsoft這個(gè)類庫中對(duì)于日期的序列化有多種方式,可以類的DataTime成員添加上對(duì)應(yīng)的標(biāo)記,這樣在進(jìn)行序列化和反序列化時(shí)就會(huì)按照指定的方式進(jìn)行,
在本例中User類(如下類)的CreateDate屬性添加的屬性是[JsonConverter(typeof(IsoDateTimeConverter))],而Birthday屬性添加的屬性是[JsonConverter(typeof(JavaScriptDateTimeConverter))],從序列化的結(jié)果可以看出來它們最終的表現(xiàn)形式并不一樣。
復(fù)制代碼 代碼如下:
[DataContract]
public class User
{
/// <summary>
/// 編號(hào)
/// </summary>
[DataMember]
public int UserId { get; set; }
/// <summary>
/// 用戶名
/// </summary>
[DataMember]
public string UserName { get; set; }
/// <summary>
/// 創(chuàng)建時(shí)間
/// </summary>
[DataMember]
[JsonConverter(typeof(IsoDateTimeConverter))]
public DateTime CreateDate { get; set; }
/// <summary>
/// 生日
/// </summary>
[DataMember]
[JsonConverter(typeof(JavaScriptDateTimeConverter))]
public DateTime Birthday { get; set; }
/// <summary>
/// 相關(guān)URL
/// </summary>
[DataMember]
public List<string> Urls { get; set; }
/// <summary>
/// 薪水
/// </summary>
[ScriptIgnore]//使用JavaScriptSerializer序列化時(shí)不序列化此字段
[IgnoreDataMember]//使用DataContractJsonSerializer序列化時(shí)不序列化此字段
[JsonIgnore]//使用JsonConvert序列化時(shí)不序列化此字段
public int Salary { get; set; }
/// <summary>
/// 權(quán)利級(jí)別
/// </summary>
[DataMember]
public Priority Priority { get; set; }
public User()
{
Urls = new List<string>();
}
}
其他:
Newtonsoft.Json.JsonConvert類是非微軟提供的一個(gè)JSON序列化和反序列的開源免費(fèi)的類庫(下載網(wǎng)址是:http://www.codeplex.com/json/),它提供了更靈活的序列化和反序列化控制,并且如果你的開發(fā)環(huán)境使用的是.NET Framework3.5及以后版本的話,你就可以使用Linq to JSON,這樣一來面對(duì)一大段的數(shù)據(jù)不必一一解析,你可以使用Linq to JSON解析出你關(guān)心的那部分即可,非常方便。
參考:
http://www.cnblogs.com/gghxh/archive/2008/01/11/1035482.html
http://blog.csdn.net/zhoufoxcn/article/details/6254657
相關(guān)文章
ASP.NET Core文件上傳與下載實(shí)例(多種上傳方式)
下面小編就為大家分享一篇ASP.NET Core文件上傳與下載實(shí)例(多種上傳方式),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01
.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件XRPC詳解
這篇文章主要給大家介紹了關(guān)于.net core高吞吐遠(yuǎn)程方法如何調(diào)用組件XRPC的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
ASP.NET?MVC實(shí)現(xiàn)本地化和全球化
這篇文章介紹了ASP.NET?MVC實(shí)現(xiàn)本地化和全球化的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10
微信公眾平臺(tái)開發(fā)之發(fā)送文本消息.Net代碼解析
這篇文章主要為大家詳細(xì)解析了微信公眾平臺(tái)開發(fā)之發(fā)送文本消息.Net代碼,感興趣的小伙伴們可以參考一下2016-06-06
ASP.NET中上傳并讀取Excel文件數(shù)據(jù)示例
如何打開Excel數(shù)據(jù)庫文件,想必有很多朋友都不清楚吧,下面通過一個(gè)簡(jiǎn)單的例子,實(shí)現(xiàn)讀取Excel數(shù)據(jù)文件2014-05-05

