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

 更新时间:2012年08月01日 15:10:58   作者:   我要评论
Newtonsoft.Json.JsonConvert类是非微软提供的一个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

相关文章

  • VS2017 安装打包插件的图文教程

    VS2017 安装打包插件的图文教程

    下面小编就为大家分享一篇VS2017 安装打包插件的图文教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • asp.net点选验证码实现思路分享 (附demo)

    asp.net点选验证码实现思路分享 (附demo)

    这篇文章主要介绍了asp.net点选验证码实现思路分享 (附demo),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-01-01
  • 详解ASP.NET Core 2.0 视图引擎(译)

    详解ASP.NET Core 2.0 视图引擎(译)

    本篇文章主要介绍了详解ASP.NET Core 2.0 视图引擎(译),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • WPF实现ScrollViewer滚动到指定控件处

    WPF实现ScrollViewer滚动到指定控件处

    这篇文章主要为大家详细介绍了WPF实现ScrollViewer滚动到指定控件处,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • aspx中的mysql操作类sqldatasource使用示例分享

    aspx中的mysql操作类sqldatasource使用示例分享

    服务器装了mysql odbc驱动,想在那个iis上操作另一个服务器的mysql,找到个.net的sqldatasource类可以操作mysql,下在把使用方法分享一下
    2014-01-01
  • .NET Core如何获取操作系统中的各种信息

    .NET Core如何获取操作系统中的各种信息

    .net core是最近讨论频率很高的话题,下面这篇文章主要给大家介绍了关于利用.NET Core如何获取操作系统中各种信息的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧
    2018-05-05
  • ADO.NET制做一个登录案例

    ADO.NET制做一个登录案例

    这篇文章主要为大家介绍了ADO.NET制做一个登录案例的详细过程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 使用C#处理WebBrowser控件在不同域名中的跨域问题

    使用C#处理WebBrowser控件在不同域名中的跨域问题

    我们在做web测试时,经常会使用WebBrowser来进行一些自动化的任务而有些网页上面会用IFrame去嵌套别的页面,这些页面可能不是在相同域名下的,这时就会出现跨域问题,无法直接在WebBrowser中获取到IFrame中的元素,接下来介绍如何解决此问题,需要了解的朋友可以参考下
    2012-12-12
  • Visual Studio.Net 内幕(7)

    Visual Studio.Net 内幕(7)

    Visual Studio.Net 内幕(7)...
    2006-09-09
  • 理解HttpHandler,并为所有*.jpg图片生成一段文字于图片上

    理解HttpHandler,并为所有*.jpg图片生成一段文字于图片上

    HttpHandler就是最终相应HTTP请求,生成HTTP响应的处理器,他们的实例由asp.net运行时创建,,并生存在asp.net的运行时环境中,如果asp.net运行时是处理请求的工厂,HttpHandler是处理请求的工人
    2012-03-03

最新评论