Deserializzazione del JSON quando i valori chiave sono sconosciuti

Come faccio a deserializzare JSON con JSON.net in C # in cui i valori chiave non sono noti (sono indirizzi MAC di più dispositivi). Potrebbero esserci una o più voci chiave.

{ "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" }, } } 

È ansible utilizzare un dizionario per memorizzare gli indirizzi MAC come chiavi:

 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; } } 

Ecco come potresti deserializzare il tuo JSON di esempio:

 Registry registry = JsonConvert.DeserializeObject(json); foreach (KeyValuePair pair in registry.Devices) { Console.WriteLine("MAC = {0}, ID = {1}", pair.Key, pair.Value.Id); } 

Produzione:

 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 

Secondo la risposta qui https://stackoverflow.com/a/1212115/1465593 json.net farà questo per voi abbastanza facilmente

Dovrebbe sembrare qualcosa del genere:

 public class Contract { public IDictionary Devices { get; set; } } 

Quindi fai questo

 var result = JsonConvert.DeserializeObject(myJson);