码迷,mamicode.com
首页 > Web开发 > 详细

JSON.Net使用总结

时间:2015-07-03 15:32:50      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

前端时间一直用JSON.Net 现在总结一下

1. 用[JsonIgnore]来忽略类中不序列化的属性

public class Product
{
    public string Name { get; set; }
    public decimal Price { get; set; }
    [JsonIgnore]
    public int ProductCode { get; set; } // omitted
}

2. 若想选择类中哪些成员进行序列化,可以在类上标记DataContract 属性,若类上已标记此Attribute,则类中所有成员都不会进行序列化,除非成员上有标记DataMember Attribute;即用 [DataMember]来序列化成员

[DataContract]
public class Product
{
    [DataMember]
    public string Name { get; set; }
    [DataMember]
    public decimal Price { get; set; }
    public int ProductCode { get; set; }  // omitted by default
}

3. 只读属性也可以序列化

4. 日期属性:JSON.Net 会把日期用ISO 8601格式进行序列化。UTC日期格式后缀是以 "Z"结尾,本地时间会包含一个时间偏差

2012-07-27T18:51:45.53403Z         // UTC
2012-07-27T11:51:45.53403-07:00    // Local

5. 处理对象循环引用问题,例如:如下2个类,相互引用,用JSON.NET进行序列化会报Error

public class Employee
{
    public string Name { get; set; }
    public Department Department { get; set; }
}

public class Department
{
    public string Name { get; set; }
    public Employee Manager { get; set; }
}
为解决此问题,有2种解决办法:

方法一:

Employee emp = new Employee();

JsonConvert.SerializeObject(emp, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore});

方法二:

public class Employee
{
    public string Name { get; set; }

  [JsonIgnore]
    public Department Department { get; set; }
}

public class Department
{

    public string Name { get; set; }

  [JsonIgnore]
    public Employee Manager { get; set; }
}

6. 序列化对象

JsonConvert.SerializeObject(emp);

string json = Newtonsoft.Json.JsonConvert.SerializeObject(emp, Newtonsoft.Json.Formatting.Indented);  // 缩进输出

 string included = Newtonsoft.Json.JsonConvert.SerializeObject( emp,  Newtonsoft.Json.Formatting.Indented, //缩进  

   new Newtonsoft.Json.JsonSerializerSettings { NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore }  // 忽略Null对象输出 );  

 

 

7. 反序列化对象

string emp = "{\"Name\":\"Alice\"}";

JsonConvert.DeserializeObject<Employee>(text);

 

JSON.Net使用总结

标签:

原文地址:http://www.cnblogs.com/kittyguo/p/4618547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!