C# 无法在ASP.NET核心中实现API
(注意:我是初学者!) 我正在做一个ASP.NET核心网站,必须在表格中显示所有国家的旅游咨询分数列表。 我无法使用旅行咨询API显示数据。每个国家都是一个单独的键,当我将JSON粘贴为类时,它们是不同的类 如何调用每个国家的类(例如,C# 无法在ASP.NET核心中实现API,c#,asp.net,asp.net-mvc,asp.net-core,asp.net-web-api,C#,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Web Api,(注意:我是初学者!) 我正在做一个ASP.NET核心网站,必须在表格中显示所有国家的旅游咨询分数列表。 我无法使用旅行咨询API显示数据。每个国家都是一个单独的键,当我将JSON粘贴为类时,它们是不同的类 如何调用每个国家的类(例如,AU)并使用循环显示该国家下的数据?问题是有太多的国家,所以我希望使用一个循环。正如您在下面的代码中看到的,我一次只能显示一个国家,因为每个国家都是不同的类别 基本API端点:https://www.travel-advisory.info/api 可选参数:h
AU
)并使用循环显示该国家下的数据?问题是有太多的国家,所以我希望使用一个循环。正如您在下面的代码中看到的,我一次只能显示一个国家,因为每个国家都是不同的类别
- 基本API端点:
https://www.travel-advisory.info/api
- 可选参数:
(将结果列表限制为单个国家/地区)https://www.travel-advisory.info/api?countrycode=AU
TravelAdvisory
管制员的操作方法:
public async Task<ActionResult> Index()
{
string countryCode = "AU"; //I plan to have multiple country codes in a loop,
//just haven't done so yet as I have issues showing the data for all country codes
// Make Web API call to get a list of travel advisories
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("https://www.travel-advisory.info");
HttpResponseMessage response = await client.GetAsync("/api");
if (countryCode != null)
{
response = await client.GetAsync("/api?countrycode=" + countryCode);
}
if (response.IsSuccessStatusCode)
{
string data = await response.Content.ReadAsStringAsync();
Rootobject model = JsonConvert.DeserializeObject<Rootobject>(data);
float score = model.data.AU.advisory.score;
//here, I can only get the score for one country since class names are different.
List<float> dataList = new List<float>();
dataList.Add(score);
TempData["Score"] = Convert.ToString(score);
return View();
}
else
{
return View(new List<Data>());
}
}
我的代码:
- 型号:
- 控制器:
public async Task<ActionResult> Index(string countryCode)
{
编辑:
您可以使用反射来获取所有属性并继续
Data data = ...;
foreach (var prop in data.GetType().GetProperties())
{
...
}
您可以将参数添加到索引方法中,如下所示:countrycode@viveknuna是的,我还没有加进去,因为我只是想弄清楚如何用循环打印每个国家代码的分数。谢谢!但是我怎样才能得到每个国家代码的分数呢?因为我只能按类检索分数(即model.data.AU.advision.score),每个国家/地区代码都是一个单独的类。if(response.issucessStatusCode){string data=wait response.Content.ReadAsStringAsync();Rootobject model=jsoninvert.DeserializeObject(data);float score=model.data.AU.advision.score;List dataList=new List();dataList.Add(score);TempData[“score”]=Convert.ToString(score);return View();}这是我检索分数的代码,但问题是我一次只能得到一个国家的分数,我不知道如何循环完成。谢谢!现在我得到一个错误,说对象不匹配目标类型,因为我是一个初学者,我不知道如何继续从你的答案和显示数据哈哈哈,很抱歉@Jan亲爱的,您需要付出一些努力,请确保StackOverFlow不是现成的解决方案。我已经回答了你的主要问题
HttpResponseMessage response = null;
if (string.IsNullOrEmpty(countryCode))
{
response = await client.GetAsync("/api);
}
else
{
response = await client.GetAsync("/api?countrycode=" + countryCode);
}
Data data = ...;
foreach (var prop in data.GetType().GetProperties())
{
...
}