Dynamische JSON-Eigenschaft deserialisieren
Aug 20 2020
Ich habe Schwierigkeiten herauszufinden, wie ein JSON mit einer dynamischen Eigenschaft (z. B. UserRequest :: 567) deserialisiert werden kann. Der Eigenschaftsname kann ein beliebiger Wert sein, und das UserRequest-Objekt enthält andere JSON-Eigenschaften, die für mich von Interesse sind
Ich habe es satt, eine Klasse zu schreiben, und ich weiß nicht, was ich mit dieser Eigenschaft anfangen soll. Was sind die besten Methoden, um mit einem solchen Problem umzugehen?
{
"objects": {
"UserRequest::567": {
"code": 0,
"message": "created",
"class": "UserRequest",
"key": "567",
"fields": {
"ref": "R-000567",
"org_id": "4"
}
}
}
}
Die Frage ist, was die besten Methoden sind, um diese Art von JSON-Zeichenfolge durchzulesen.
Dankeschön
Antworten
1 janzen Aug 20 2020 at 23:23
Zu Deserializediesem Zweck Newtonsoft.Jsonsind hier die Klassen:
public class CreateRequest
{
public long code { get;set; }
public string message { get; set; }
[JsonProperty("class")]
public string class1 { get; set; }
public string key { get; set; }
public Fields fields { get; set; }
}
public class Fields
{
[JsonProperty("ref")]
public string refe { get; set; }
public string org_id { get; set; }
}
public class Root
{
public Dictionary<string, CreateRequest> objects { get; set; }
//The 'string' key in the dictionary is the 'UserRequest::567'
}
Dann zu Deserializeverwenden:
var x = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(jsonObject).objects.Values;