2012-02-13 19 views
10

JSON cadena:convertir JSON para C# lista de objetos

{"movies":[{"id":"1","title":"Sherlock"},{"id":"2","title":"The Matrix"}]} 

clase C#:

public class Movie { 
    public string title { get; set; } 
} 

C# conversión de JSON para C# lista de Película de:

JavaScriptSerializer jss = new JavaScriptSerializer(); 
List<Movie> movies = jss.Deserialize<List<Movie>>(jsonString); 

Mi movies variable es termina siendo una lista vacía con count = 0. ¿Me falta algo?

+0

Quizás debería nombrar al primer nodo json como 'Película', por lo que corresponde a la clase' Película'. –

Respuesta

18

Su asignación de clase C# no coincide con la estructura json.

Solución:

class MovieCollection { 
     public IEnumerable<Movie> movies { get; set; } 
} 

class Movie { 
     public string title { get; set; } 
} 

class Program { 
     static void Main(string[] args) 
     { 
       string jsonString = @"{""movies"":[{""id"":""1"",""title"":""Sherlock""},{""id"":""2"",""title"":""The Matrix""}]}"; 
       JavaScriptSerializer serializer = new JavaScriptSerializer(); 
       MovieCollection collection = serializer.Deserialize<MovieCollection>(jsonString); 
     } 
} 
+0

Lo usé, dice: "la clase de recopilación (MovieCollection) no es compatible para la deserialización de una matriz. ¡Por favor ayuda! –

0

Si desea hacer coincidir la estructura CSharp, puede cambiar la cadena de JSON, como este :

{[{"id": "1", "title": "Sherlock"}, {"id": "2", "title": "The Matrix"}}}