繁体   English   中英

使用增量整数在.net中反序列化JSON

[英]Deserializing JSON in .net with incremental integer

我的飞利浦色相灯泡有一些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; }
}
var dict = JsonConvert.DeserializeObject<Dictionary<string, BulbNumber>>(json);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM