Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 反序列化具有不一致属性的json对象_C#_Json_Json.net_Deserialization - Fatal编程技术网

C# 反序列化具有不一致属性的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

从一个外部API我得到了一个不一致的json响应

对于某些对象,我得到如下结果:

"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小时的通知来回复。特别是当这些复制品可能很有用,但写得太差以至于你无法使用它们时。