2015-01-21 62 views
0

我试图从API中获取的JSON字符串(迄今为止用字符串变量测试)创建电影列表。我的电影级别:JSON to object using C#JavaScriptSerializer

private string title { get; set; } 
private int year { get; set; } 
private string releaseDate { get; set; } 

public override String ToString() 
{ 
    return title + " (" + year + "): " + releaseDate; 
} 

但是,下面的代码不会在电影对象中插入任何内容。前一段时间,它创建了2个对象(这是正确的,因为它是JSON字符串中的2个电影),但没有任何内容。现在我一无所有,代码不会创建任何对象。

string json = "{\"movies\": [{\"title\": \"Something\",\"year\": \"1999\",\"releaseDate\": \"1234\"},{\"title\": \"Something2\",\"year\": \"1992\",\"releaseDate\": \"1235\"}]}"; 

List<Movie> movieList = new JavaScriptSerializer().Deserialize<List<Movie>>(json); 

很明显,我很新的这一点,但我似乎无法找到一个解决我的问题在别处“的原因要么是不一样的问题,因为我有或者我找不到我的代码和解决方案之间的差异。

我在这里错过了什么? Movie-class中的变量名称是否必须与JSON字符串中的相同?

编辑:我终于找到了我的第二个问题here。当你使用自动属性时,写出私人信息是错误的。另见{ get; set; } syntax

+0

你试过这样吗?字符串json =“[{\”title \“:\”Something \“,\”year \“:\”1999 \“,\”releaseDate \“:\”1234 \“},{\”title \“: “Something2”,“year”:“1992”,“releaseDate”:\“1235 \”}]“; – 2015-01-21 00:16:43

+0

不完全如此,但我只用{}尝试过一部电影。 – Phil 2015-01-21 00:21:24

+0

你为什么不能使用Newtonsoft使用JSON.NET的任何原因? – 2015-01-21 10:02:08

回答

2

你JSON是包含这是一个数组“电影”属性的对象:

{ 
    movies: [ 
     { 
      "title": "Something" 
     }, 
     { 
      "title": "Something Else" 
     } 
    ] 
} 

反序列化它,你需要一个对象,像这样一个“电影”属性:

class MoviesObject { 
    public List<Movie> movies { get; set; } 
} 

List<Movie> movieList = new JavaScriptSerializer(). 
    Deserialize<MoviesObject>(json).movies; 
+0

所以我需要一个包含JSON等外部列表的对象?非常感谢,我现在又有2个空的对象。我的输出: '(0): (0):' – Phil 2015-01-21 00:25:18

+0

您不应该为您的JSON DTO使用字段。你永远不应该有公共领域。改用属性。 – Aron 2015-01-21 00:43:47