2016-06-15 61 views
1

我旁邊JSON:Json.NET不要序列特定的屬性

"mode":"modeValue", 
"format":"formatValue", 
"options":{ 
    "page":1, 
    "size":"70", 
    "resize":"false", 
    "templating":null 
} 

但「選項」值對象可以是與當前不同,我可以有很多不同的選擇。例如,它可以是

"options": { 
    "page": 2, 
    "first": "true", 
    "parent": null 
} 

我創建了一個類

public class Settings 
{ 
    [JsonProperty(PropertyName = "mode")] 
    public string Mode { get; set; } 

    [JsonProperty(PropertyName = "format")] 
    public string OutputFormat { get; set; } 

    [JsonProperty(PropertyName = "options")] 
    public string Options { get; set; } 
} 

我不想反序列化「選項」值,但將其設置爲在Options屬性字符串(連載)。

注意:我只會將這個類用於反序列化。

謝謝!

回答

0

您可以使用OnDeserialized屬性來實現此目的。這裏有一個例子:通過Temp.ToString()

+0

public class Settings { [JsonProperty(PropertyName = "mode")] public string Mode { get; set; } [JsonProperty(PropertyName = "format")] public string OutputFormat { get; set; } [JsonIgnoreAttribute] public string Options { get; private set; } [JsonProperty(PropertyName = "options")] private object Temp { get; set; } [OnDeserialized] private void OnDeserialized(StreamingContext ctx) { Options = Temp?.ToString(); } } 

「選項」反序列化到「溫度」屬性,然後選擇「選項」中填充謝謝!這對我很有用,所以我會將其標記爲「解決方案」。 你可以告訴我什麼'Temp'在'Options = Temp?.ToString();'? – Pepo

+1

Temp?.ToString()是寫入temp!= null的短語嗎? temp.ToString():null; – Viezevingertjes

+0

@Pepo - Viezevingertjes是對的。我已經添加這只是爲了安全(如果「選項」爲null或未定義在JSON中) –

相關問題