我目前陷入了一个需要为学校项目构建的应用程序。我们需要从api链接读取数据并将其显示在列表中,但我不能设置类的变量,因为它在树结构中,我不知道如何在响应中导航。回复如下。如何获得类中的字符串标题与此响应中的标题相同?
{
Results: [
{
Id: 6413,
Feed: 1,
Title: "'Politieteam chemicaliën werkt onder te grote druk'",
Summary: "Het team van de politie dat dagelijks met levensgevaarlijke chemicaliën te maken krijgt bij het ontmantelen van illegale drugslabs staat onder enorme druk. Sommige werkdagen duren 24 uur.<br /> ",
PublishDate: "2015-09-30T14:32:28",
Image: "http://media.nu.nl/m/m1oxo80axqo8_sqr256.jpg/politieteam-chemicalien-werkt-grote-druk.jpg",
Url: "http://www.nu.nl/binnenland/4136038/politieteam-chemicalien-werkt-grote-druk.html",
Related: [
"http://nu.nl/binnenland/3932577/vaten-met-chemische-xtc-stoffen-gevonden-in-garage-breugel.html",
"http://nu.nl/binnenland/3486693/drugslaboratorium-in-huis-heerlen.html",
"http://nu.nl/buitenland/2614100/synthetische-drugs-verdringen-cocaine.html"
],
Categories: [
{
Id: 50,
Name: "Algemeen"
},
{
Id: 53,
Name: "Binnenland"
}
],
IsLiked: false
},
{
Id: 6414,
Feed: 2,
Title: "'Nederlandse betalingsdient Adyen gewaardeerd op 2 miljard'",
Summary: "Een Amerikaans investeringsfonds, waar onder anderen Mark Zuckerberg van Facebook en Jack Dorsey van Twitter in participeren, heeft een investering gedaan in de Nederlandse betalingsverkeerdienst Adyen. ",
PublishDate: "2015-09-30T14:30:29",
Image: "http://media.nu.nl/m/m1nxkfwa72hm_sqr256.jpg/nederlandse-betalingsdient-adyen-gewaardeerd-2-miljard.jpg",
Url: "http://www.nu.nl/internet/4136034/nederlandse-betalingsdient-adyen-gewaardeerd-2-miljard.html",
Related: [ ],
Categories: [
{
Id: 57,
Name: "Internet"
},
{
Id: 91,
Name: "Economie"
},
{
Id: 94,
Name: "Ondernemen"
}
],
IsLiked: false
},
}
我失败的代码:
public async Task LoadData()
{
try
{
using (var client = new HttpClient())
{
var json = await client.GetStringAsync("HTTPLINKTOAPI");
Data = JsonConvert.DeserializeObject<ObservableCollection<TestModel>>(json);
}
}
catch { }
}
TestModel类:
public sealed class TestModel
{
public string Id { get; set; }
public string Title { get; set; }
}
答案 0 :(得分:0)
首先,为所有结果创建容器(Results
类) - JSON中的结果对象。它是对象(Result
类)的集合(数组),具有Id
,Title
和其他集合等属性等等。
public class ResultContent
{
public IList<Result> Results { get; set; }
}
public class Result
{
public int Id { get; set; }
public string Title { get; set; }
}
var r = JsonConvert.DeserializeObject<ResultContent>(json);
另外,摆脱这个空的catch
,否则你不会知道从API获取数据时出了什么问题。空catch
总是非常糟糕的做法。