2012-12-27 100 views
2
的一部分

可能有人告訴我如何序列化和反序列化僅陣列tools[]的一部分,無需Func委託其中:Json.net只序列化陣列

public class Tool 
    { 
     public Tool() 
     { 
      lastUse = 1; 
      running = false; 
     } 
     public Func<int> action; 
     public bool running; 
     public int lastUse; 
    } 
    public static Tool[] tools = new Tool[] { new Tool(), new Tool(), new Tool(),new Tool()}; 

先謝謝您的任何答覆。

+0

能告訴你要序列化到這個數據? –

回答

4

你可以做的一件事是利用DataContractDataMember屬性來只序列化你想要的數據。

[DataContract] 
public class Tool 
{ 
    public Tool() 
    { 
     lastUse = 1; 
     running = false; 
    } 

    public Func<int> action; 

    [DataMember] 
    public bool running; 

    [DataMember] 
    public int lastUse; 
} 

結果無屬性:

[{"action":null,"running":false,"lastUse":1},{"action":null,"running":false,"lastUse":1},{"action":null,"running":false,"lastUse":1},{"action":null,"running":false,"lastUse":1}] 

隨着屬性:

[{"running":false,"lastUse":1},{"running":false,"lastUse":1},{"running":false,"lastUse":1},{"running":false,"lastUse":1}] 

這工作既Json.NETDataContractJsonSerialize

我喜歡這種方法是讓我們保持標準的C#屬性命名約定,但仍然輸出「正確的」JSON。

[DataMember(Name="last_use")] 
public int LastUse { get; set; } 

將輸出

{"last_use": 1}