我有一个返回JSON的URL。我正在开发一个Windows手机应用程序,我希望通过发送URL获取该json数据,然后将其转换为字符串并从中提取数据。我已经下载了json.net来读取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 :(得分: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。