我的问题可能微不足道,但我花了将近 6 个小时来尝试解决问题。
public async Task<object> save()
{
var uri = "https://newsapi.org/v1/articles?source=talksport&apiKey=longKey";
var httpClient = new HttpClient ();
HttpResponseMessage res = await httpClient.GetAsync(uri);
var data = await res.Content.ReadAsStreamAsync();
// this is what I want to achieve like in python you can do something like this
foreach(var item in data){
Console.writeline(item.summary);
}
// end of arbitrary code
return data;
}
我的问题是,我无法进行此转换以获取响应然后访问 json 数据。 在 python 中你可以做一些事情
r = request.get(apiUrl)
data = r.json()
for item in data:
print(item.summary)
这就是我用 C# 努力实现的全部,任何帮助完成代码或解释。谢谢
最佳答案
尝试使用这样的东西:
安装 Newtonsoft.Json打包并添加using Newtonsoft.Json;
using (var request = new HttpRequestMessage()) {
request.RequestUri = new Uri("https://newsapi.org/v1/articles?source=talksport&apiKey=longKey");
request.Method = HttpMethod.Get;
using (var response = await httpClient.SendAsync(request)) {
string content = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<IList<dynamic>>(content);
foreach(var item in result){
Console.writeline(item.summary);
}
}
}
来自评论
Then i get this "{\"vouchers\":[\"UN9NKK\",\"FYMFVS\",\"WV5AX7\",\"M2TJJ8\",\"FBB9AL\",\"MBW8Z4\"]}"
你可以创建一个新类
public class MyResponse {
public IEnumerable<string> Vouchers {get;set; }
}
然后
var response = JsonConvert.DeserializeObject<MyResponse>(content);
foreach(var item in response.Vouchers){
Console.WriteLine(item);
}
关于c# - 向 Api 发出 Http 请求并转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48361927/