在键值未知时反序列化JSON
如何在C#中使用JSON.net反序列化JSON,其中密钥值未知(它们是多个设备的MAC地址)。 可能有一个或多个密钥条目。
{ "devices": { "00-00-00-00-00-00-00-00": { "name":"xxx", "type":"xxx", "hardwareRevision":"1.0", "id":"00-00-00-00-00-00-00-00" }, "01-01-01-01-01-01-01-01": { "name":"xxx", "type":"xxx", "hardwareRevision":"1.0", "id":"01-01-01-01-01-01-01-01" }, } }
您可以使用Dictionary将MAC地址存储为键:
public class Device { public string Name { get; set; } public string Type { get; set; } public string HardwareRevision { get; set; } public string Id { get; set; } } public class Registry { public Dictionary Devices { get; set; } }
以下是您可以反序列化样本JSON的方法:
Registry registry = JsonConvert.DeserializeObject(json); foreach (KeyValuePair pair in registry.Devices) { Console.WriteLine("MAC = {0}, ID = {1}", pair.Key, pair.Value.Id); }
输出:
MAC = 00-00-00-00-00-00-00-00, ID = 00-00-00-00-00-00-00-00 MAC = 01-01-01-01-01-01-01-01, ID = 01-01-01-01-01-01-01-01
根据这里的答案https://stackoverflow.com/a/1212115/1465593 json.net将很容易为你做到这一点
它看起来像这样:
public class Contract { public IDictionary Devices { get; set; } }
然后就这样做
var result = JsonConvert.DeserializeObject(myJson);
- 如何在where和between子句中查询DBF(dbase)文件的日期类型字段
- 如何在asp.net mvc身份上设置自定义身份validation?
- 为什么XmlSerializer不需要标记类型?
- 检查列表中的字符串是否包含Linq的特定字符串
- container.RegisterWebApiControllers(GlobalConfiguration.Configuration)导致InvalidOperationException
- Windows Azure未找到C ++ / CLI项目的DLL
- C#WinForms模型 – 视图 – 演示者(被动视图)
- “会议已结束!” – NHibernate
- 两个服务之间的WCF回调