Tengo la siguiente variable de tipo {Newtonsoft.Json.Linq.JArray}
.
properties["Value"] {[
{
"Name": "Username",
"Selected": true
},
{
"Name": "Password",
"Selected": true
}
]}
Lo que quiero lograr es convertir esto a List<SelectableEnumItem>
donde SelectableEnumItem
está el siguiente tipo:
public class SelectableEnumItem
{
public string Name { get; set; }
public bool Selected { get; set; }
}
Soy bastante nuevo en programación y no estoy seguro de si esto es posible. Cualquier ayuda con el ejemplo de trabajo será muy apreciada.
JsonConvert.DeserializeObject(value)
lugar deJsonConvert.DeserializeObject<T>(value)
El ejemplo en la pregunta es un caso más simple en el que los nombres de las propiedades coinciden exactamente en json y en el código. Si los nombres de las propiedades no coinciden exactamente, por ejemplo, la propiedad en json es
"first_name": "Mark"
y la propiedad en el código esFirstName
usar el método Select de la siguiente manerafuente
El valor de retorno de API en mi caso como se muestra aquí:
La conversión de la matriz de elementos a la lista de clientes se manejó como se muestra aquí:
fuente
Puedo pensar en un método diferente para lograr lo mismo
o (tuve una situación en la que este no funcionó bien)
o use la extensión linq
o
o más explícitamente
Por favor, preste atención en la solución anterior. Utilicé el objeto dinámico
Puedo pensar en algunas soluciones más que son combinaciones de las soluciones anteriores. pero creo que cubre casi todos los métodos disponibles por ahí.
Yo uso el primero
fuente
fuente
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); }
Use IList para obtener el Conteo JArray y Use Loop para Convertir en Lista
fuente