【发布时间】:2017-04-27 07:00:50
【问题描述】:
JsonIgnore 属性可用于忽略序列化中的某些属性。我想知道是否可以做相反的事情?所以 JsonSerializer 会忽略每个属性,除非它上面有特殊属性?
【问题讨论】:
JsonIgnore 属性可用于忽略序列化中的某些属性。我想知道是否可以做相反的事情?所以 JsonSerializer 会忽略每个属性,除非它上面有特殊属性?
【问题讨论】:
是的,有。当你用[JsonObjectAttribute] 标记你的类并传递MemberSerialization.OptIn 参数时,成员serialization is opt-in。然后用[JsonProperty] 标记您的成员,以将它们包含在序列化中。
[JsonObject(MemberSerialization.OptIn)]
public class Person
{
[JsonProperty]
public string Name { get; set; }
// not serialized because mode is opt-in
public string Department { get; set; }
}
【讨论】:
MemberSerialization.OptIn 的替代方法是使用 DataContract/DataMember 属性:
[DataContract]
public class Computer
{
// included in JSON
[DataMember]
public string Name { get; set; }
[DataMember]
public decimal SalePrice { get; set; }
// ignored
public string Manufacture { get; set; }
public int StockCount { get; set; }
public decimal WholeSalePrice { get; set; }
public DateTime NextShipmentDate { get; set; }
}
【讨论】: