使用 httpClient.GetJsonAsync 错误的 Blazor Rest Api 调用

Posted

技术标签:

【中文标题】使用 httpClient.GetJsonAsync 错误的 Blazor Rest Api 调用【英文标题】:Blazor Rest Api call using httpClient.GetJsonAsync Errors 【发布时间】:2021-03-26 19:32:31 【问题描述】:

我正在尝试使用以下调用从 Blazor 服务器应用程序调用 Rest API 以获取项目列表。 API 正确返回,但无法映射到项目对象,因为项目的 JSON 嵌套在 results 属性下。

这是我正在打的电话

var projects = await httpClient.GetJsonAsync<Project[]>("projects");

这就是 API 调用的响应的样子。


  "message": "GET Request successful.",
  "isError": false,
  "result": [
    
      "projectCode": "PRJ-1996",
      "businessAssociateID": "BA000000000002",
      "contractStartDate": "11/19/2020 8:37:17 AM",
      "contractEndDate": "11/19/2020 8:37:17 AM",
      "contractStatus": "Active",
      "createdBy": "system",
      "createdDate": "2020-11-19T08:37:17.37",
      "active": true
    ,
    
      "projectCode": "PRJ-1997",
      "businessAssociateID": "BA000000000002",
      "contractStartDate": "11/19/2020 8:37:17 AM",
      "contractEndDate": "11/19/2020 8:37:17 AM",
      "contractStatus": "Active",
      "createdBy": "system",
      "createdDate": "2020-11-19T08:37:17.37",
      "active": true
    ,
    
      "projectCode": "PRJ-1998",
      "businessAssociateID": "BA000000000002",
      "contractStartDate": "11/19/2020 8:37:17 AM",
      "contractEndDate": "11/19/2020 8:37:17 AM",
      "contractStatus": "Active",
      "createdBy": "system",
      "createdDate": "2020-11-19T08:37:17.37",
      "active": true
    ,
    
  ]

如何使用 GetJsonAsync 函数映射到项目列表。我看到的所有示例都只返回没有响应消息的对象数组。

这是我在通话中收到的错误。路由对于 API 调用是正确的,并且已经过测试。

JsonException: The JSON value could not be converted to Web.Data.Project[]. Path: $ | LineNumber: 0 | BytePositionInLine: 1.

【问题讨论】:

【参考方案1】:

快速简便的方法是

class Response

   public string  Message  get; set; 
   public bool  IsError  get; set; 
   public Project[] Result  get; set; 
  

这让您也可以查看 IsError 和 Message。

【讨论】:

以上是关于使用 httpClient.GetJsonAsync 错误的 Blazor Rest Api 调用的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)