2012-02-13 83 views
10

JSON字符串:转换JSON对象的C#列表

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

C#类:

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

C#转换JSON到C#电影的名单:

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

movies变量结果是count = 0的空列表。我错过了什么吗?

+0

也许你应该将第一个json节点命名为'Movie',以便它对应于'Movie'类? – 2012-02-13 02:43:48

回答

18

您的c#类映射与json结构不匹配。

解决方案:

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

我用这个,它说:“集合类(MovieCollection)不支持反序列化数组。请帮助! – 2015-04-02 14:46:27

0

发送数据,如果你想匹配的CSHARP结构,可以改变JSON字符串,这样:

{[{ “ID” 为 “1”, “标题”: “夏洛特”},{ “ID”: “2”, “标题”: “黑客帝国”}]}