【发布时间】:2017-01-05 17:18:33
【问题描述】:
所以我正在从 ASP.NET 核心应用程序调用 Web API。我使用 HttpClient 并将其作为字符串读取,但我想将其作为 JSON 对象读取。我知道您可以将其读取为 Generic class ReadAsAsync<Generic>(); 但是,返回的对象是一个巨大的 JSON 对象,为它编写一个 Generic 类需要做很多工作。我的问题是我怎样才能将它作为它的 JSON 对象读取?
public async Task<IActionResult> SendRequest()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(" https://api.forecast.io/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP GET
HttpResponseMessage response = await client.GetAsync("forecast/KEY/");
if (response.IsSuccessStatusCode)
{
var forcast = await response.Content.ReadAsStringAsync();
Console.WriteLine("{0}", forcast);
// return Json( JSON ) ;
}
}
// return Json( JSON ) ;
}
我看到了三种响应阅读器,其中任何一种都可以成为 JSON 对象吗?
ReadAsByteArrayAsync, ReadAsStreamAsync, ReadAsStringAsync
【问题讨论】:
-
请澄清:您是说
forecast/KEY/已经返回 JSON 格式的文本,而您正试图弄清楚如何将其作为 JSON 格式的文本传递回 Action 方法的调用者?如果是这样,请参阅此相关问题:stackoverflow.com/questions/18409863/… -
@stephen.vakil 我正在尝试将其作为 JSON 对象读取,或者我猜想将字符串转换为 JSON 对象。
-
JSON object是什么意思?根据注释掉的代码,您似乎希望您的操作按原样返回 JSON,以便 javascript 调用者可以使用它,在这种情况下,请使用我提供的链接中的代码,它将采用字符串由 forecast.io 返回并以 JSON 格式返回。如果您的意思是,您想在返回之前将其作为对象进行操作,那么请参阅下面的答案。 -
哦,我现在明白了。是的,这就是我想要做的。那么它应该看起来像这样 [ return Json(forecast, "application/json") ] 吗?
-
可能是
return Content(forcast, "application/json")
标签: c# asp.net json asp.net-web-api asp.net-core