Вызов API Blazor Rest с использованием ошибок httpClient.GetJsonAsync

Я пытаюсь позвонить в Rest API из серверного приложения Blazor, используя следующий вызов, чтобы получить список проектов. API возвращает правильный результат, но не может сопоставиться с объектом проекта, поскольку JSON для проектов вложен в свойство результатов.

Это звонок, который я делаю

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.

person chunt    schedule 16.12.2020    source источник


Ответы (1)


Быстрый и простой выход был бы

class Response
{
   public string  Message { get; set; }
   public bool  IsError { get; set; }
   public Project[] Result { get; set; }
}  

Это также позволяет вам взглянуть на IsError и Message.

person Henk Holterman    schedule 16.12.2020