2016-06-15 4 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. Вот пример:

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», а затем «Параметры» заселяются Temp.ToString()

+0

Спасибо! Это работа для меня, поэтому я буду отмечать это как «решение». Можете ли вы рассказать мне, что такое '?' После 'Temp' в' Options = Temp? .ToString(); '? – Pepo

+1

Temp? .ToString() - это сокращение от записи temp! = Null? temp.ToString(): null; – Viezevingertjes

+0

@Pepo - Viezevingertjes является правильным. Я добавил это только для того, чтобы быть в безопасности (в случае, если «опции» имеют значение null или undefined в json) –

Смежные вопросы