在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍
在.NET中使用Newtonsoft.Json转换,读取,写入的方法介绍
发布时间:2016-12-29 来源:查字典编辑
摘要:全局引用usingNewtonsoft.Json;usingNewtonsoft.Json.Converters;//把Json字符串反序列...

全局引用

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新asp.net教程学习
热门asp.net教程学习
编程开发子分类