C# 从JSON API数据获取字段
如何从JSON文本中获取特定字段? 我正在开发一个在线票务商店,在注册表单中,用户必须填写一个国家/地区组合框。我使用RESTful API动态填充该组合框:。我只需要获取名称字段并将其添加到我的组合框中。我该怎么做 到目前为止,我的代码是:C# 从JSON API数据获取字段,c#,C#,如何从JSON文本中获取特定字段? 我正在开发一个在线票务商店,在注册表单中,用户必须填写一个国家/地区组合框。我使用RESTful API动态填充该组合框:。我只需要获取名称字段并将其添加到我的组合框中。我该怎么做 到目前为止,我的代码是: protected void Page_Load(object sender, EventArgs e) { List<Country> countries = GetCountryNames();
protected void Page_Load(object sender, EventArgs e)
{
List<Country> countries = GetCountryNames();
foreach(Country country in countries)
{
country_dropdown_list.Items.Add(country.getCountryName());
}
}
//Calls API to fill combobox with country names
protected List<Country> GetCountryNames()
{
HttpWebRequest request =
(HttpWebRequest)WebRequest.Create(string.Format("https://restcountries.eu/rest/v2/all"));
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine(response.StatusCode);
Console.WriteLine(response.Server);
string jsonString;
using(Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, System.Text.Encoding.UTF8);
jsonString = reader.ReadToEnd();
List<String> countries = JsonConvert.DeserializeObject<List<String>>(jsonString);
}
return countries;
}
受保护的无效页面加载(对象发送方,事件参数e)
{
List countries=GetCountryNames();
foreach(国家中的国家)
{
country_下拉列表_list.Items.Add(country.getCountryName());
}
}
//调用API以使用国家/地区名称填充组合框
受保护列表GetCountryNames()
{
HttpWebRequest请求=
(HttpWebRequest)WebRequest.Create(string.Format(“https://restcountries.eu/rest/v2/all"));
request.Method=“GET”;
HttpWebResponse=(HttpWebResponse)request.GetResponse();
Console.WriteLine(响应状态码);
Console.WriteLine(response.Server);
字符串jsonString;
使用(Stream=response.GetResponseStream())
{
StreamReader=新的StreamReader(stream,System.Text.Encoding.UTF8);
jsonString=reader.ReadToEnd();
List countries=JsonConvert.DeserializeObject(jsonString);
}
返回国;
}
我正在使用一个自定义类进行反序列化,但我认为我可以通过一个字符串列表来管理它。您使用的API的文档页面显示并检索您想要的字段,例如:
https://restcountries.eu/rest/v2/all?fields=name;capital;currencies
就HTTP而言,JSON只是文本。除非服务本身提供了返回特定字段的方法,否则无法告诉服务返回特定字段。否则,您必须检索整个响应并对其进行解析
最后,HttpWebRequest是一个遗留类,在HttpClient可用时不应使用。在.NET核心中,HttpWebRequest是HttpClient上的遗留外观
在.NET 5中,您可以使用对HttpClient的一次调用替换所有代码,并且:
记录国家(字符串名称);
...
变量url=”https://restcountries.eu/rest/v2/all?fields=name";
var countries=wait client.GetFromJsonAsync(url);
一般来说,大多数公共API都有减少其输出的方法——或者向您收费。所有主机和云服务提供商对出站流量收费。除非站点有办法过滤其输出,否则它将为您的请求付费。您使用的API的文档页面显示并检索您想要的字段,例如:
https://restcountries.eu/rest/v2/all?fields=name;capital;currencies
就HTTP而言,JSON只是文本。除非服务本身提供了返回特定字段的方法,否则无法告诉服务返回特定字段。否则,您必须检索整个响应并对其进行解析
最后,HttpWebRequest是一个遗留类,在HttpClient可用时不应使用。在.NET核心中,HttpWebRequest是HttpClient上的遗留外观
在.NET 5中,您可以使用对HttpClient的一次调用替换所有代码,并且:
记录国家(字符串名称);
...
变量url=”https://restcountries.eu/rest/v2/all?fields=name";
var countries=wait client.GetFromJsonAsync(url);
一般来说,大多数公共API都有减少其输出的方法——或者向您收费。所有主机和云服务提供商对出站流量收费。除非网站有办法过滤其输出,否则它将为您的请求付费。为什么您要使用HttpWebRequest而不是HttpClient?在.NET核心中,HttpWebRequest只是HttpClient上的一个遗留外观。此外,就HTTP而言,JSON只是文本。无法检索特定字段,需要检索整个响应。除非API只允许检索特定字段,否则您必须检索并解析整个响应。为什么要使用HttpWebRequest而不是HttpClient?在.NET核心中,HttpWebRequest只是HttpClient上的一个遗留外观。此外,就HTTP而言,JSON只是文本。无法检索特定字段,需要检索整个响应。除非API只允许检索特定字段,否则您将不得不检索和解析整个响应。完全错过了文档中的这一部分,谢谢!它现在可以完美地工作了,完全错过了文档中的这一部分,谢谢!它现在工作得很好