Ich habe die folgende Variable vom Typ {Newtonsoft.Json.Linq.JArray}
.
properties["Value"] {[
{
"Name": "Username",
"Selected": true
},
{
"Name": "Password",
"Selected": true
}
]}
Was ich erreichen will , ist dies zu konvertieren , List<SelectableEnumItem>
wo SelectableEnumItem
ist die folgende Art:
public class SelectableEnumItem
{
public string Name { get; set; }
public bool Selected { get; set; }
}
Ich bin ziemlich neu in der Programmierung und ich bin mir nicht sicher, ob dies möglich ist. Jede Hilfe mit Arbeitsbeispiel wird sehr geschätzt.
JsonConvert.DeserializeObject(value)
anstelle vonJsonConvert.DeserializeObject<T>(value)
Das Beispiel in der Frage ist ein einfacher Fall, in dem die Eigenschaftsnamen in json und im Code genau übereinstimmen. Wenn die Eigenschaftsnamen nicht genau übereinstimmen, z. B. die Eigenschaft in json
"first_name": "Mark"
und die Eigenschaft im Code,FirstName
verwenden Sie die Select-Methode wie folgtquelle
Der API-Rückgabewert in meinem Fall wie hier gezeigt:
Die Konvertierung des Elementarrays in eine Liste von Clients wurde wie folgt durchgeführt:
quelle
Ich kann mir verschiedene Methoden vorstellen, um dasselbe zu erreichen
oder (ich hatte eine Situation, in der diese nicht gut funktionierte)
oder verwenden Sie die Linq-Erweiterung
oder
oder expliziter
Bitte beachten Sie in der obigen Lösung, dass ich dynamisches Objekt verwendet habe
Ich kann mir einige weitere Lösungen vorstellen, die Kombinationen der oben genannten Lösungen sind. aber ich denke, es deckt fast alle verfügbaren Methoden ab.
Ich selbst benutze den ersten
quelle
quelle
public class SelectableEnumItem { [JsonProperty("Name")] public string Name { get; set; } [JsonProperty("Selected")] public bool Selected { get; set; } } public IList<SelectableEnumItem> GetListOfObject(string jsonTextHere) { return JsonConvert.DeserializeObject<List<SelectableEnumItem>>(jsonTextHere); }
Verwenden Sie IList, um die JArray-Anzahl abzurufen, und verwenden Sie Loop, um sie in eine Liste zu konvertieren
quelle