繁体   English   中英

如何获取 json 响应表单 http 获取请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM