In meiner App habe ich Antworten von einem Server. Diese Antworten können sein:C# Klassenname basierend auf Variable
{
"cmd":"read_ack",
"model":"sensor_ht",
"sid":"158d0001a2ddac",
"short_id":36192,
"data":"{\"voltage\":3005,\"temperature\":\"2741\",\"humidity\":\"5828\"}"
}
Oder es kann sein:
{
"cmd":"read_ack",
"model":"magnet",
"sid":"158d000159febe",
"short_id":40805,
"data":"{\"voltage\":3045,\"status\":\"open\"}"
}
Kann ich so etwas wie "dynamisch" Klasse?
Meine Klasse sieht wie folgt aus:
public class RootObject
{
public string cmd { get; set; }
public string model { get; set; }
public string sid { get; set; }
public int short_id { get; set; }
public Data data { get; set; }
}
Und meine Datenklasse wie folgt aussieht:
public class Data
{
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public int voltage { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string status { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string temperature { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string humidity { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string no_close { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public string no_motion { get; set; }
}
Ist es möglich, verschiedene Klassen für jede Art von Reaktion auf habe ich bekommen? Ist es möglich, den Datentyp in der RootObject-Klasse dynamisch zu ändern?
Vielen eine Menge
Versuchen Sie Vererbung (ich denke, das ist, was Sie wollen). Wenn alle Ihre Klassen das Zeug in RootObject benötigen, lassen Sie sie davon erben. Siehe https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/inheritance –
https://stackoverflow.com/questions/20432166/how-to- deserialize-a-json-property-that-can -be-zwei-verschiedene-Datentypen-using-js – CodeCaster