Json.NET不会对特定属性进行序列化

时间:2016-06-15 08:00:37

标签: c# json json.net

我有下一个JSON:

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

我不想反序列化"选项" value,但要在Options属性中将其设置为字符串(序列化)。

注意:我只会将此类用于反序列化。

谢谢!

1 个答案:

答案 0 :(得分: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()

填充