Convierta Newtonsoft.Json.Linq.JArray en una lista de tipos de objetos específicos

Resuelto Mdb asked hace 12 años • 6 respuestas

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 SelectableEnumItemestá el siguiente tipo:

public class SelectableEnumItem
    {
        public string Name { get; set; }
        public bool Selected { get; set; }
    }

Soy bastante nuevo en la programación y no estoy seguro de si esto es posible. Cualquier ayuda con un ejemplo práctico será muy apreciada.

Mdb avatar Nov 26 '12 19:11 Mdb
Aceptado

Simplemente llame array.ToObject<List<SelectableEnumItem>>()al método. Te devolverá lo que necesitas.

Documentación: Convertir JSON a un tipo

HoberMellow avatar Nov 26 '2012 13:11 HoberMellow

El ejemplo de la pregunta es un caso más simple en el que los nombres de las propiedades coinciden exactamente en json y en 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 es, FirstNameutilice el método Select de la siguiente manera

List<SelectableEnumItem> items = ((JArray)array).Select(x => new SelectableEnumItem
{
    FirstName = (string)x["first_name"],
    Selected = (bool)x["selected"]
}).ToList();
Souvik Basu avatar Mar 23 '2015 12:03 Souvik Basu