使用 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有三种方式(不使用,动态使用,静态使用,默认是动态使用)