Mam następującą zmienną typu {Newtonsoft.Json.Linq.JArray}
.
properties["Value"] {[
{
"Name": "Username",
"Selected": true
},
{
"Name": "Password",
"Selected": true
}
]}
Co chcę osiągnąć jest konwersja to List<SelectableEnumItem>
gdzie SelectableEnumItem
jest następujący typ:
public class SelectableEnumItem
{
public string Name { get; set; }
public bool Selected { get; set; }
}
Jestem raczej nowy w programowaniu i nie jestem pewien, czy jest to możliwe. Każda pomoc z działającym przykładem będzie bardzo mile widziana.
JsonConvert.DeserializeObject(value)
zamiastJsonConvert.DeserializeObject<T>(value)
Przykład w pytaniu to prostszy przypadek, w którym nazwy właściwości pasowały dokładnie w jsonie i kodzie. Jeśli nazwy właściwości nie są dokładnie takie same, np. Właściwość w json jest,
"first_name": "Mark"
a właściwość w kodzie toFirstName
użyj metody Select w następujący sposóbźródło
Zwracana wartość API w moim przypadku, jak pokazano tutaj:
Konwersja tablicy pozycji na listę klientów została przeprowadzona, jak pokazano tutaj:
źródło
Mogę wymyślić inną metodę osiągnięcia tego samego
lub (miałem sytuację, że ta nie działała dobrze)
lub użyj rozszerzenia linq
lub
lub bardziej konkretnie
proszę zwrócić uwagę w powyższym rozwiązaniu użyłem dynamicznego obiektu
Mogę wymyślić kilka innych rozwiązań, które są kombinacjami powyższych rozwiązań. ale myślę, że obejmuje prawie wszystkie dostępne metody.
Ja używam pierwszego
źródło
źródło
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); }
Użyj IList, aby uzyskać liczbę JArray i użyj Loop, aby przekonwertować na listę
źródło