我正在为我的学校项目设计一个使用C#和Web服务的Web应用程序。我认为学校教材中提供了一个代码,我认为该代码适用于我的代码,但未显示结果。
这是来自API的JSON的一部分:
{
"id": 550,
"overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking
"title": "Fight Club",
}
我正在使用TMDB中的api填充gridview或listview。我已经尝试使用我的scl给出的代码,并将其修改为我的要求。但它不起作用。当我处于调试模式时,我能够查看json数据。但数据不会绑定到电影列表。
public class movies
{
public string title { get; set; }
public string overview { get; set; }
public int id { get; set; }
}
public class movielist
{
public int resultCount;
public movies[] movielists;
// public List<movies> movieslists { get; set; } //just tried this
}
protected void Page_Load(object sender, EventArgs e)
{
var webRequest = (HttpWebRequest)WebRequest.Create("https://api.themoviedb.org/3/trending/movie/week?api_key={api key}");
var webResponse = (HttpWebResponse)webRequest.GetResponse();
if (webResponse.StatusCode == HttpStatusCode.OK)
{
JavaScriptSerializer json = new JavaScriptSerializer();
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
string resString = sr.ReadToEnd();//there is JSON here
movielist list = json.Deserialize<movielist>(resString);// is always null istead of the JSON
GridView1.DataSource = list.movielists;
GridView1.DataBind();
}
else
{
errortxt.Text = "invalid";
}
}
预期的输出是要用接收到的数据填充GridView1的结果。 movielist变为null而不是填充。我可以打开resString中的json。
答案 0 :(得分:0)
当Json反序列化器返回null时,这是因为Json与代码中的模型不匹配。这可能是由于区分大小写或其他一些原因。
您可以解决以下问题:
您的对象现在应该正确反序列化。
通常,您应该能够根据自己的喜好重命名自动生成类的根对象
但是,要修改自动生成的代码中的其他任何内容,将需要使用custom deserializer或attributes自定义来覆盖特定成员的设置。