2012-02-13 12 views
10

Json ciąg:nawrócony json do C# listy obiektów

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

C# klasa:

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

C# konwersji json do C# lista filmem:

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

Moja zmienna movies jest kończąc na pustej liście z count = 0. Czy brakuje mi czegoś?

+0

Być może powinieneś nazwać pierwszy węzeł json jako "Film", aby odpowiadał klasie "Film"? –

Odpowiedz

18

Mapowanie klas C# nie pasuje do struktury json.

Rozwiązanie:

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

Użyłem tego, mówi: "klasa kolekcji (MovieCollection) nie jest obsługiwana do deserializacji tablicy.proszę o pomoc! –

0

Jeśli chcesz dopasować strukturę CSharp można zmienić ciąg JSON, podobnie jak to :

{[{"id": "1", "tytuł": "Sherlock"}, {"id": "2", "tytuł": "Macierz"}]}

Powiązane problemy