2017-04-27 27 views

回答

4

是的。當您用[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; } 
} 
+1

或者,人們可以使用[數據契約屬性](HTTP://www.newtonsoft。 com/json/help/html/DataContractAndDataMember.htm)具有相同的效果。 – dbc

+0

@dbc我喜歡Json屬性的替代品。我選擇了Json屬性,因爲它們允許將來進一步輕鬆定製,並且他們也會採用相同的努力來應用。數據合同屬性的優點是它們已經被大多數用戶所熟悉。 – Aphelion

1

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; } 
} 

來源:http://james.newtonking.com/archive/2009/10/23/efficient-json-with-json-net-reducing-serialized-json-size