反序列化的类是空白的 - JSON C#

rev*_*ter 3 c# serialization json deserialization

我将JSON API响应反序列化为一个类 - 但是代码运行后该类为空,即根本没有反序列化.

这是一个名为responsetext的JSON示例:

{"ON":{"Date":"3/16/2017 10:12:51 AM","PARAM1":"84","PARAM2":"31597.535"},"OFF":{"Date":"3/16/2017 9:05:53 AM","PARAM3":"0","PARAM4":"0"}}
Run Code Online (Sandbox Code Playgroud)

我有两节课:

public class ON
{
public Date {get; set;}
public string PARAM1 {get; set;}
public string PARAM2 {get; set;}
}
public class OFF
{
public Date {get; set;}
public string PARAM3 {get; set;}
public string PARAM4 {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我在这里反序列化:

ON class1 = JsonConvert.DeserializeObject<ON>(responsetext);
OFF class2 = JsonConvert.DeserializeObject<OFF>(responsetext);
Run Code Online (Sandbox Code Playgroud)

但课程是空的.我究竟做错了什么?

use*_*702 10

您正在尝试将相同的JSON反序列化为两个不同的类,就好像反序列化器将神奇地知道要使用哪个JSON部分.你需要一个包装类:

public class Message
{
    public ON ON { get; set; }

    public OFF OFF { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后像这样反序列化:

var message = JsonConvert.DeserializeObject<Message>(responsetext);
Run Code Online (Sandbox Code Playgroud)

现在您可以访问message.ONmessage.OFF:

运行示例的屏幕截图