我对.NET Core的家庭都是陌生的,有人可以指导我进行此操作。
我需要对此网址进行请求,并将数据保存到数据库中:网址:https://covid19.mathdro.id/api
JSON输出看起来像这样:
{"confirmed":{"value":303001,"detail":"https://covid19.mathdro.id/api/confirmed"},"recovered":{"value":91669,"detail":"https://covid19.mathdro.id/api/recovered"},"deaths":{"value":12762,"detail":"https://covid19.mathdro.id/api/deaths"},"dailySummary":"https://covid19.mathdro.id/api/daily","dailyTimeSeries":{"pattern":"https://covid19.mathdro.id/api/daily/[dateString]","example":"https://covid19.mathdro.id/api/daily/2-14-2020"},"image":"https://covid19.mathdro.id/api/og","source":"https://github.com/mathdroid/covid19","countries":"https://covid19.mathdro.id/api/countries","countryDetail":{"pattern":"https://covid19.mathdro.id/api/countries/[country]","example":"https://covid19.mathdro.id/api/countries/USA"},"lastUpdate":"2020-03-21T20:13:21.000Z"}
型号:总计
public class Total
{
[Key]
public int Id { get; set; }
[Column(TypeName = "int")]
[Required]
public string Confirmed { get; set; }
[Column(TypeName = "int")]
[Required]
public string Recovered { get; set; }
[Column(TypeName = "int")]
[Required]
public string Deaths { get; set; }
[Column(TypeName = "datetime2")]
[Required]
public string LastUpdated { get; set; }
}
我的导入模型:
client.BaseAddress = new Uri("https://covid19.mathdro.id/api");
var response = await client.GetAsync($"");
response.EnsureSuccessStatusCode();
var stringResult = await response.Content.ReadAsStringAsync();
我被困在这里,无法继续。我该如何获取数据,我只需要:确认,恢复,死亡和lastUpdate
请有人在这里帮助...
我建议您使用JSon.NET或Newtonsoft。您可以从nuget软件包管理器添加它。这是将传入的json数据映射到您的自定义类Total的代码。只需添加您的类构造函数,它将json数据作为typeof字符串作为参数,然后我添加了一种方法来使代码更短
public class Total {
public Total(string json) {
JObject jObject = JObject.Parse(json);
Confirmed = GetStringFromJToken(jObject, "confirmed");
Recovered = GetStringFromJToken(jObject, "recovered");
Deaths = GetStringFromJToken(jObject, "deaths");
LastUpdated = (string)jObject["lastUpdate"];
}
private string GetStringFromJToken(JObject jObject, string key) {
JToken keyToken = jObject[key];
return (string)keyToken["value"];
}
[Key]
public int Id { get; set; }
[Column(TypeName = "int")]
[Required]
public string Confirmed { get; set; }
[Column(TypeName = "int")]
[Required]
public string Recovered { get; set; }
[Column(TypeName = "int")]
[Required]
public string Deaths { get; set; }
[Column(TypeName = "datetime2")]
[Required]
public string LastUpdated { get; set; }
}
您需要将JSON
强制转换为Class Object
。您可以使用NewtonSoft.Json
using (var client = new HttpClient())
{
string url = string.Format("https://covid19.mathdro.id/api");
var response = client.GetAsync(url).Result;
string responseAsString = await response.Content.ReadAsStringAsync();
result = JsonConvert.DeserializeObject<CovidResult>(responseAsString);
}
public class CovidResult
{
[JsonProperty("confirmed")]
public ValueModel Confirmed { get; set; }
[JsonProperty("recovered")]
public ValueModel Recovered { get; set; }
[JsonProperty("deaths")]
public ValueModel Deaths { get; set; }
}
public class ValueModel
{
[JsonProperty("value")]
public int Value { get; set; }
}
您可以分叉或下载此仓库:https://github.com/fatihyildizhan/CoronaParser
您的情态应该是
public class Total
{
public Confirmed confirmed { get; set; }
public Recovered recovered { get; set; }
public Deaths deaths { get; set; }
public string dailySummary { get; set; }
public DailyTimeSeries dailyTimeSeries { get; set; }
public string image { get; set; }
public string source { get; set; }
public string countries { get; set; }
public CountryDetail countryDetail { get; set; }
public DateTime lastUpdate { get; set; }
}
public class Confirmed
{
public int value { get; set; }
public string detail { get; set; }
}
public class Recovered
{
public int value { get; set; }
public string detail { get; set; }
}
public class Deaths
{
public int value { get; set; }
public string detail { get; set; }
}
public class DailyTimeSeries
{
public string pattern { get; set; }
public string example { get; set; }
}
public class CountryDetail
{
public string pattern { get; set; }
public string example { get; set; }
}
如果stringResult
具有实际值,您要做的就是:
JsonConvert.DeserializeObject<Total>(stringResult);
此外,如果对模式有疑问,可以随时使用http://json2csharp.com/