C# 反序列化具有不一致属性的json对象
从一个外部API我得到了一个不一致的json响应 对于某些对象,我得到如下结果:C# 反序列化具有不一致属性的json对象,c#,json,json.net,deserialization,C#,Json,Json.net,Deserialization,从一个外部API我得到了一个不一致的json响应 对于某些对象,我得到如下结果: "open": { "devices": { "mobile": 25, "desktop": 16 } } "open": { "devices": [] } 对于另一个对象(相同的请求),我得到如下结果: "open&quo
"open": {
"devices": {
"mobile": 25,
"desktop": 16
}
}
"open": {
"devices": []
}
对于另一个对象(相同的请求),我得到如下结果:
"open": {
"devices": {
"mobile": 25,
"desktop": 16
}
}
"open": {
"devices": []
}
我猜,当设备中没有数据时,我会得到第二个响应。
我正在尝试将其反序列化到以下类:
公共部分类打开
{
[JsonProperty(“设备”)]
公共设备设备{get;set;}
}
公共部分类设备
{
[JsonProperty(“移动”)]
公共int移动{get;set;}
[JsonProperty(“桌面”)]
公共int桌面{get;set;}
}
但是当设备
是一个空数组(这很有意义)时,这就不起作用了。
你知道我如何使用Json.NET实现这一点吗
编辑:
有人发布了可能的答案
-没有回答我的问题,因为“设备”的正确版本只是一个对象而不是数组。我无法将其反序列化到设备数组
-动态和对象不是一个选项,因为我知道正确的数据类型。为什么人们不能在将问题作为副本结束之前提问?第一个副本确实回答了您的问题,您只需颠倒逻辑:如果对象是对象,则返回对象,如果数组,则返回null。我同意,dup 100%解决了您的问题,如果我们重新打开这个问题,那么随着时间的推移,人们会把这个问题标记为这个问题的愚弄。被骗的另一个原因是,你可能能够接触到已经回答了澄清问题的用户,而不是等待他们回复你的新帖子。@Chrischaller认为颠倒逻辑还不够。。那是一个星期五D-但仍然是:嗯,关于SO的问题越来越接近于dup-to-frequest。。不仅仅是这一个。我会很高兴地回答并接受代表,每个人都进入关闭队列,但没有那么多人处理重新打开的队列。我更愿意看到一个过渡期,在它关闭之前,你会得到x小时的通知来回复。特别是当这些复制品可能很有用,但写得太差以至于你无法使用它们时。