2012-02-13 69 views
10

Json chuỗi:convert json để C# danh sách các đối tượng

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

C# lớp:

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

C# chuyển đổi json để C# danh sách các phim của:

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

biến movies tôi là kết thúc là một danh sách trống với count = 0. Tôi có thiếu gì đó không?

+0

Có lẽ bạn nên đặt tên nút json đầu tiên là 'Phim' để nó tương ứng với lớp' Phim'? –

Trả lời

18

Ánh xạ lớp C# của bạn không khớp với cấu trúc json.

Giải pháp:

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

Tôi sử dụng điều này, nó nói: "lớp sưu tập (MovieCollection) không được hỗ trợ để deserialization của một mảng. Xin vui lòng giúp đỡ! –

0

Nếu bạn muốn để phù hợp với cấu trúc CSharp, bạn có thể thay đổi chuỗi JSON, như thế này :

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

Các vấn đề liên quan