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

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

我尝试更改JsonProperty属性中的defaultValueHanding选项,但没有帮助。有什么办法可以做到这一点吗?

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

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

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

正如布莱恩·罗杰斯指出的那样,自定义转换器可以在这里找到:

如何使用 Json.NET 反序列化可以是两种不同数据类型的 JSON 属性

相关内容

  • 没有找到相关文章