[英]How to get json response form http get request
我从 API 获取数据并将其转换为 json 字符串,如下所示 -
[HttpGet]
public async Task<JProperty[]> GetSomeDataAsync()
{
try
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("myURI");
HttpResponseMessage response = await client.GetAsync(client.BaseAddress);
response.EnsureSuccessStatusCode();
//string responseBody = await response.Content.ReadAsStringAsync();
if (response != null)
{
jsonString = await response.Content.ReadAsStringAsync();
jsonObject = JObject.Parse(jsonString);
//return JsonConvert.DeserializeObject(jsonString);
//return JsonConvert.DeserializeObject<object>(jsonString);
var x = jsonObject.Descendants().OfType<JProperty>().Where(p => p.Name == "observations")
.ToArray();
return x;
}
else
{
throw new ArgumentNullException();
}
}
catch (Exception ex)
{
}
上面的代码写在 Controller 和响应发送到 Angular 包含以下代码的组件 -
public economicData: any | null = null;
public value: any;
chart: any=[];
constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string)
{
http.get<any>(baseUrl + 'somedata', { context: new
HttpContext().set(IsCacheable, true)
}).subscribe(result => {
this.economicData = result;
console.log(this.economicData);
this.value = this.economicData.observations.map((observations:
any) => {
observations.value });
console.log(this.value);
}, error => console.error(error));
}`
在 controller 的调试模式下,我可以看到数组中的数据。 但是在调试时,我没有在控制台日志中的对象数组中获得任何数据,也没有在组件的结果中获得任何数据。 因此,我无法将 map 存在于 json 中的属性添加到图表中。
以下是 output 在 console.log 中登录的图像 -在此处输入图像描述
我不确定我是否完全理解您的问题/问题,但我会试一试。
来自您的细分市场的这段代码:
this.economicData = result;
console.log(this.economicData);
this.value = this.economicData.observations // other code here
根据您的控制台日志截图this.economicData
是一个数组。 但是,然后您尝试访问其上的属性,我希望它会出错。
看看我的例子。 您必须安装 newtonsoft nuget package 才能使此代码正常工作。
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("API URL");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var inputs = new Parameters() { inputs }; // parameters is a class of your api input parameters
HttpResponseMessage response = await client.PostAsJsonAsync("Continuation of your API URL", inputs);
var resultString = await response.Content.ReadAsStringAsync();
Excel resultJson = JsonConvert.DeserializeObject<your API Output Class>(resultString)!;
if (response.IsSuccessStatusCode)
{
// your code after api response receive.
}
else
{
Console.WriteLine("Error");
}
}
如果这对某人有所帮助,请投票并接受此答案。 谢谢你
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.