J'ai la variable de type suivante {Newtonsoft.Json.Linq.JArray}
.
properties["Value"] {[
{
"Name": "Username",
"Selected": true
},
{
"Name": "Password",
"Selected": true
}
]}
Ce que je veux accomplir est de convertir ceci en List<SelectableEnumItem>
où SelectableEnumItem
est le type suivant:
public class SelectableEnumItem
{
public string Name { get; set; }
public bool Selected { get; set; }
}
Je suis plutôt novice en programmation et je ne sais pas si c'est possible. Toute aide avec l'exemple de travail sera grandement appréciée.
JsonConvert.DeserializeObject(value)
au lieu deJsonConvert.DeserializeObject<T>(value)
L'exemple de la question est un cas plus simple où les noms de propriété correspondent exactement dans json et dans le code. Si les noms de propriété ne correspondent pas exactement, par exemple la propriété dans json est
"first_name": "Mark"
et la propriété dans le code estFirstName
alors utilisez la méthode Select comme suitla source
La valeur de retour de l'API dans mon cas, comme indiqué ici:
La conversion du tableau d'éléments en liste de clients a été gérée comme indiqué ici:
la source
Je peux penser à différentes méthodes pour atteindre le même
ou (j'ai eu une situation où celle-ci ne fonctionnait pas bien)
ou utilisez l'extension linq
ou
ou plus explicitement
veuillez faire attention dans la solution ci-dessus J'ai utilisé un objet dynamique
Je peux penser à d'autres solutions qui sont des combinaisons des solutions ci-dessus. mais je pense que cela couvre presque toutes les méthodes disponibles.
Moi j'utilise le premier
la source
la source
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); }
Utilisez IList pour obtenir le nombre JArray et utilisez la boucle pour convertir en liste
la source