我有这样的类:
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 属性