我正在尝试显示从列表框中的eztv.re API中提取的列表。我有 尝试使用:
p {
border:1px solid black;
display:-webkit-flex;
display:-moz-flex;
display:flex;
-webkit-align-items: baseline;
align-items: baseline;
}
.one {
font-size:2.0em;
}
.two {
font-size:3.0em;
margin-left:auto;
}
}
但是root.select不起作用,我的RootObject类是:
using (HttpClient client = new HttpClient())
{
using (HttpResponseMessage response = await client.GetAsync(("http://eztvapi.re/shows/1&query_term=" + SearchTextBox.Text)))
{
using (Stream stream = response.Content.ReadAsStreamAsync().Result)
{
using (StreamReader reader = new StreamReader(stream))
{
string json = reader.ReadToEnd();
var root = JsonConvert.DeserializeObject<RootObject>(json);
var articles = root.Select(m => new Article { Name = root.title, ImagePath = root.images.poster, id = root._id, Year = root.year }).ToList();
foreach (Article s in articles)
{
this.Listbox.Items.Add(new Article { Name = s.Name, ImagePath = s.ImagePath, Year = s.Year, id = s.id });
}
}
}
Article类只是一个字符串列表。我的代码与另一个API(yts.to)完美匹配,但是在那一个中,我使用RootObject.Data,包含
的数据类public class RootObject
{
public string _id { get; set; }
public Images images { get; set; }
public string imdb_id { get; set; }
public object last_updated { get; set; }
public int num_seasons { get; set; }
public string slug { get; set; }
public string title { get; set; }
public string tvdb_id { get; set; }
public string year { get; set; }
}
我知道对此的解决方案可能相当简单,但我似乎无法找到它。
答案 0 :(得分:1)
您的API似乎返回List<RootObject>
,而不是RootObject
。这对我有用:
string json = reader.ReadToEnd();
var root = JsonConvert.DeserializeObject<List<RootObject>>(json);
var articles = root.Select(m => new Article { Name = m.title, ImagePath = m.images.poster, id = m._id, Year = m.year });
答案 1 :(得分:0)
您可以使用网站http://json2csharp.com/根据JSON字符串生成C#类。
http://eztvapi.re/shows/1&query_term=abc发送的结果是 RootObject数组。
因此,在您的代码中,您需要将JsonConvert.DeserializeObject行更新为RootObject数组。
var root = JsonConvert.DeserializeObject<RootObject[]>(json);