Json.Net - 仅当类型匹配时如何反序列化

时间:2014-12-16 13:15:48

标签: c# .net json json.net

我有一个这样的课程:

public class Event
{
            [JsonProperty(PropertyName = "_id")]
            public string Id { get; set; }
            [JsonProperty(PropertyName = "status"]
            public string Status { get; set; }
}

我收到的JSON看起来像这样:

[
    {
        "_id": 4,
        "status": "started"
    },
    {
        "_id": 117841261,
        "status": {
            "_statusid": 1,
            "date": "01.01.2015"
        }
    }
]

请注意:在第一个对象中,状态字段是字符串。在第二个对象中,它是对象。在我的对象中,它是 string 属性。我想在状态字段是字符串时解析它。当它像第二个对象那样的对象时,我可以跳过它。

我尝试更改defaultValueHanding属性中的JsonProperty选项,但它没有帮助。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

我已经解决了将属性类型转换为动态的问题。所以每次都没有问题地反序列化,我只在需要的时候使用它。

现在我的模型看起来像这样:

public class Event
{
            [JsonProperty(PropertyName = "_id")]
            public string Id { get; set; }
            [JsonProperty(PropertyName = "status"]
            public dynamic Status { get; set; }
}

正如Brian Rogers所指出的,可以在这里找到自定义转换器:

How to deserialize a JSON property that can be two different data types using Json.NET