我有一个返回json的api。我正在使用JSON.NET反序列化为对象。
public sealed class ConfigurationCount
{
[JsonProperty("count")]
public int Count { get; set; }
[JsonProperty("game")]
public MyEnums.Game Game { get; set; }
}
Essentiall使用:
JsonConvert.DeserializeObject<List<ConfigurationCount>>(json);
返回ConfigurationCount列表。
但是,有时候,json属性“game”无法转换为MyEnums.Game。在这种情况下,我只想跳过将此对象反序列化到列表中。
有没有什么方法可以用可能只是跳过错误的东西来装饰ConfigurationCount类? e.g。
[JsonObject(OnError = Skip)]
public sealed class ConfigurationCount { ... }
我不想写自定义的JsonConverter,因为我不确定我是如何在每个对象的基础上做的。
亲切的问候
亚当
答案 0 :(得分:0)
我通常做这样的事情:
public sealed class ConfigurationCount
{
[JsonProperty("count")]
public int Count { get; set; }
[JsonIgnore]
public bool IsValid => Enum.IsDefined(typeof(MyEnums.Game), game);
[JsonProperty("game")]
private int game { get; set; }
[JsonIgnore]
public MyEnums.Game Game
{
get
{
if (!IsValid) throw new InvalidOperationException("Object is invalid");
return (MyEnums.Game) game;
}
set { game = (int) value; }
}
}
然后你只需要反序列化所有内容,然后删除那些IsValid为false的内容。