服务器之家

服务器之家 > 正文

在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍

时间:2019-10-07 11:09     来源/作者:asp.net教程网

全局引用 
using Newtonsoft.Json; 
using Newtonsoft.Json.Converters; 

//把Json字符串反序列化为对象 
目标对象 = JavaScriptConvert.DeserializeObject(JSON字符串, typeof(目标对象)); 
//把目标对象序列化为Json字符串 
stringJson字符串 = JavaScriptConvert.SerializeObject(目标对象); 
1、引用Newtonsoft.Json.dll; 
2、在项目中添加引用; 
序列化和反序列在.net项目中,简单示例 

复制代码代码如下:


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); 



注意: 
一、如果需要序列化实体 
1、类名必须添加[DataContract]标记; 
2、类属性添加[DataMember]标记; 
二、如果有不需要序列化的字段,可以给该字段添加[JsonIgnore]标记 
在Newtonsoft这个类库中对于日期的序列化有多种方式,可以类的DataTime成员添加上对应的标记,这样在进行序列化和反序列化时就会按照指定的方式进行, 
在本例中User类(如下类)的CreateDate属性添加的属性是[JsonConverter(typeof(IsoDateTimeConverter))],而Birthday属性添加的属性是[JsonConverter(typeof(JavaScriptDateTimeConverter))],从序列化的结果可以看出来它们最终的表现形式并不一样。 

复制代码代码如下:


[DataContract] 
public class User 

/// <summary> 
/// 编号 
/// </summary> 
[DataMember] 
public int UserId { get; set; } 
/// <summary> 
/// 用户名 
/// </summary> 
[DataMember] 
public string UserName { get; set; } 
/// <summary> 
/// 创建时间 
/// </summary> 
[DataMember] 
[JsonConverter(typeof(IsoDateTimeConverter))] 
public DateTime CreateDate { get; set; } 
/// <summary> 
/// 生日 
/// </summary> 
[DataMember] 
[JsonConverter(typeof(JavaScriptDateTimeConverter))] 
public DateTime Birthday { get; set; } 
/// <summary> 
/// 相关URL 
/// </summary> 
[DataMember] 
public List<string> Urls { get; set; } 
/// <summary> 
/// 薪水 
/// </summary> 
[ScriptIgnore]//使用JavaScriptSerializer序列化时不序列化此字段 
[IgnoreDataMember]//使用DataContractJsonSerializer序列化时不序列化此字段 
[JsonIgnore]//使用JsonConvert序列化时不序列化此字段 
public int Salary { get; set; } 
/// <summary> 
/// 权利级别 
/// </summary> 
[DataMember] 
public Priority Priority { get; set; } 

public User() 

Urls = new List<string>(); 



其他: 
Newtonsoft.Json.JsonConvert类是非微软提供的一个JSON序列化和反序列的开源免费的类库(下载网址是:http://www.codeplex.com/json/),它提供了更灵活的序列化和反序列化控制,并且如果你的开发环境使用的是.NET Framework3.5及以后版本的话,你就可以使用Linq to JSON,这样一来面对一大段的数据不必一一解析,你可以使用Linq to JSON解析出你关心的那部分即可,非常方便。 

参考:

http://www.cnblogs.com/gghxh/archive/2008/01/11/1035482.html
http://blog.csdn.net/zhoufoxcn/article/details/6254657

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
返回顶部