2012-10-23 40 views
2

我有一个返回JSON的URL。我正在开发一个Windows Phone应用程序,我想通过发送url来获取该json数据,然后将其转换为字符串并从中提取数据。我已经下载了json.net来阅读json数据。
我是否必须反序列化数据..是否有必要?
我不能以字符串格式获取数据,然后解析它。如何从url中检索Json作为字符串?

我正在使用下面的代码来读取字符串格式的json数据。

Array Movies = jObject["movies"].ToArray(); 
foreach (JToken Movie in Movies) 
    MessageBox.Show(Movie["title"].ToString()); 

JSON的是这样的:

 
{"total":51,"movies":[{"id":"771242005","title":"Magic Mike","year":2012,"mpaa_rating":"R","runtime":110,"critics_consensus":"Magic Mike's sensitive direction, smart screenplay, and strong performances allow audiences to have their beefcake and eat it too.","release_dates":{"theater":"2012-06-29","dvd":"2012-10-23"},"ratings":{"critics_rating":"Certified Fresh","critics_score":79,"audience_rating":"Upright","audience_score":63},"synopsis":"Set in the world of male strippers, Magic Mike is directed by Steven Soderbergh and stars Channing Tatum in a story inspired by his real life. The film follows Mike (Tatum) as he takes a young dancer called The Kid (Pettyfer) under his wing and schools him in the fine arts of partying, picking up women, and making easy money. -- (C) Warner Bros.","posters":{"thumbnail":"http://content8.flixster.com/movie/11/16/66/11166610_mob.jpg","profile":"http://content8.flixster.com/movie/11/16/66/11166610_pro.jpg","detailed":"http://content8.flixster.com/movie/11/16/66/11166610_det.jpg","original":"http://content8.flixster.com/movie/11/16/66/11166610_ori.jpg"},"abridged_cast":[{"name":"Channing Tatum","id":"162661835","characters":["Magic Mike"]},{"name":"Alex Pettyfer","id":"326298019","characters":["Adam","The Kid"]},{"name":"Matt Bomer","id":"771077752","characters":["Ken"]},{"name":"Joe Manganiello","id":"770800475","characters":["Big Dick Richie"]},{"name":"Matthew McConaughey","id":"162652350","characters":["Dallas"]}],"alternate_ids":{"imdb":"1915581"},"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/movies/771242005.json","alternate":"http://www.rottentomatoes.com/m/magic_mike/","cast":"http://api.rottentomatoes.com/api/public/v1.0/movies/771242005/cast.json","clips":"http://api.rottentomatoes.com/api/public/v1.0/movies/771242005/clips.json","reviews":"http://api.rottentomatoes.com/api/public/v1.0/movies/771242005/reviews.json","similar":"http://api.rottentomatoes.com/api/public/v1.0/movies/771242005/similar.json"}}],"links":{"self":"http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/upcoming.json?page_limit=1&country=us&page=1","next":"http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/upcoming.json?page_limit=1&country=us&page=2","alternate":"http://www.rottentomatoes.com/dvd/upcoming.json"},"link_template":"http://api.rottentomatoes.com/api/public/v1.0/lists/dvds/upcoming.json?page_limit={results-per-page}&page={page-number}&country={country-code}"} 

`

我只希望影片名称和标题虽然。

+0

让你的示例json小而干净,没人能读懂它 –

回答

0

如果你的问题是“是否需要反序列化”,那么答案是否定的,这是没有必要的。

也就是说,在使用数据服务器端时,将JSON字符串反序列化为强类型对象通常是首选,因为它可以减少运行时错误并使其更容易测试代码。

实施例使用JSON.Net

public class Movie 
{ 
    public string Name { get; set; } 
    public string Title { get; set; } 
} 

public Movie Convert(string jsonString) 
{ 
    return JsonConvert.DeserializeObject<Movie>(jsonString); 
} 

有用于反序列化JSON到一个对象的其他选项。如果您有一个代表JSON对象的DataContract,则可以使用DataContractJsonSerializer