I have an some JSON from my Philips hue bulbs. It looks like this.
{
"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",
}
}
As you can see each bulb has a number 1, 2 ,3 etc for each bulb added to the system.
How do i create a model to deserialize this data? What i tried doesn't work.
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);
}
And my object which i mostly imported. When i try importing it directly it splits it up as 1_ 2_ 3_ etc.
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; }
}
var dict = JsonConvert.DeserializeObject<Dictionary<string, BulbNumber>>(json);