Json.NET防止反序列化JsonProperty(以便随后手动反序列化)

时间:2020-01-29 14:59:14

标签: c# json json.net deserialization

我在Web API中使用Json.NET,并且有一个如下所示的请求类:

public class Model
{
    [JsonProperty("id", Required = Required.Always)]
    public string Id { get; set; }

    [JsonProperty("value", Required = Required.AllowNull)]
    public JRaw Value { get; set; }
}

我希望能够在Value属性中接收不同类型的值(例如stringboolarray[]object等。 )。

我想手动反序列化Value属性,因为我有一些要用于特殊情况的自定义转换器。

例如,我有一个StringDateTimeConverter(可以转换ISO_8601字符串和UNIX timestamps)。

这是我对Value属性进行反序列化的方式:

object result = JsonConvert.DeserializeObject(model.Value.ToString(), systemType, serailizerSettings);

在这种情况下,systemTypeSystem.DateTime,我已经将StringDateTimeConverter添加到了serializerSettings转换器中。

问题在于,我的转换器每次接收System.DateTime对象而不是string对象时,这意味着它仍然反序列化Value属性。

有人知道如何防止财产反序列化吗?

很明显,我尝试使用JRaw,我猜它主要用于序列化(而不是反序列化),并且objectValue属性的类型。

注意对于我来说,Model类不使用自定义转换器,因为我需要在选择了服务器端逻辑的某些服务器端逻辑之后反序列化Value属性用于Value属性反序列化的正确类型的转换器。

0 个答案:

没有答案