我有两个API:
GetDeviceInfo(string addr)
,返回单个设备的JSON数据,如下所示:
{
"DeviceName": "TCatPlcCtrl",
"TurbineName": "WTG2",
"State": "run",
"TurbineType": "1500",
"Version": "2.11.1816"
}
GetAllDeviceInfo()
,返回包含IP地址的设备数据集合:
{
"192.168.151.1": {
"DeviceName": "TCatPlcCtrl",
"TurbineName": "WTG2",
"State": "run",
"TurbineType": "1500",
"Version": "2.11.1816"
},
"192.168.151.33": {
"DeviceName": "TCatPlcCtrl",
"TurbineName": "WTG2",
"State": "stop",
"TurbineType": "1500",
"Version": "2.11.2216"
}
}
对于API GetDeviceInfo(string addr)
,我尝试了NewtonSoft.Json,并通过调用JsonConvert.DeserializeObject<ModelClass>(content)
获得了正确的数据。
但我不知道如何反序列化GetAllDeviceInfo()
API返回的嵌套JSON数据。
答案 0 :(得分:1)
假设您的模型类定义如下:
public class DeviceInfo
{
public string DeviceName { get; set; }
public string TurbineName { get; set; }
public string State { get; set; }
public string TurbineType { get; set; }
public string Version { get; set; }
}
然后,对于第一个JSON,您可以像这样反序列化:
var device = JsonConvert.DeserializeObject<DeviceInfo>(json);
对于第二种情况,您可以反序列化为字典,其中键是IP地址,值是设备:
var dict = JsonConvert.DeserializeObject<Dictionary<string, DeviceInfo>>(json2);