zoukankan      html  css  js  c++  java
  • 在.NET中使用Newtonsoft.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解析出你关心的那部分即可,非常方便。

  • 相关阅读:
    Python 设置 IP 代理 访问网页 ( 用户名密码验证代理 )
    Squid 3.3 部署 HTTP代理服务器
    文件打开模式 w+ r+ a+ 区别和辨析
    Python 学习工具书
    Conference Related to social network.
    Linux 使用故障小记
    正则表达式学习连接
    再次被windows操作系统伤害之吐槽
    数据结构——线性表的顺序表示(1)
    斐波那契数列两种算法的时间复杂度
  • 原文地址:https://www.cnblogs.com/ywei221/p/json.html
Copyright © 2011-2022 走看看