我的飞利浦色调灯泡有一些JSON。它看起来像这样。
{
"1": {
"state": {
"on": false,
"bri": 75,
"hue": 60309,
"sat": 192,
"effect": "none",
"xy": [
0.5002,
0.2691
],
"ct": 443,
"alert": "select",
"colormode": "xy",
"reachable": false
},
"swupdate": {
"state": "noupdates",
"lastinstall": null
},
"type": "Extended color light",
},
"2": {
"state": {
"on": true,
"bri": 254,
"hue": 38000,
"sat": 254,
"effect": "none",
"xy": [
0.1603,
0.3238
],
"ct": 153,
"alert": "select",
"colormode": "hs",
"reachable": true
},
"swupdate": {
"state": "noupdates",
"lastinstall": null
},
"type": "Extended color light",
},
"3": {
"state": {
"on": true,
"bri": 254,
"hue": 38000,
"sat": 254,
"effect": "none",
"xy": [
0.1603,
0.3238
],
"ct": 153,
"alert": "none",
"colormode": "hs",
"reachable": true
},
"swupdate": {
"state": "noupdates",
"lastinstall": null
},
"type": "Extended color light",
}
}
正如您所看到的,每个灯泡都有一个数字1,2,3等添加到系统中的每个灯泡。
如何创建模型以反序列化此数据?我尝试过的并不起作用。
using (var getclient = new HttpClient())
{
Rootobject model = new Rootobject();
string bulburl = "http://<ip>/api/<token>/lights";
Console.WriteLine($"URL: {bulburl}");
var json = await getclient.GetStringAsync(bulburl);
Console.WriteLine("Json count: " + json.ToString().Count());
model = JsonConvert.DeserializeObject<Rootobject>(json);
Console.WriteLine("model count: " + model.ToString().Count());
return View(model);
}
我的主要是我进口的物品。当我尝试直接导入它时,将其拆分为1_ 2_ 3_等。
public class Rootobject
{
public BulbNumber[] bulbnumber { get; set; }
}
public class BulbNumber
{
public State[] state { get; set; }
public Swupdate swupdate { get; set; }
public string type { get; set; }
public string name { get; set; }
public string modelid { get; set; }
public string manufacturername { get; set; }
public string uniqueid { get; set; }
public string swversion { get; set; }
public string swconfigid { get; set; }
public string productid { get; set; }
}
public class State
{
public bool on { get; set; }
public int bri { get; set; }
public int hue { get; set; }
public int sat { get; set; }
public string effect { get; set; }
public float[] xy { get; set; }
public int ct { get; set; }
public string alert { get; set; }
public string colormode { get; set; }
public bool reachable { get; set; }
}
public class Swupdate
{
public string state { get; set; }
public object lastinstall { get; set; }
}
答案 0 :(得分:2)
var dict = JsonConvert.DeserializeObject<Dictionary<string, BulbNumber>>(json);