Результат API не десериализуется должным образомC#

Место общения программистов C#
Ответить
Anonymous
 Результат API не десериализуется должным образом

Сообщение Anonymous »

Я создаю веб-приложение blazor, которое взаимодействует с API .NET 5.
Я получаю ошибки десериализации, и я считаю, что причина в том, что возвращаемый объект не совсем как объект, который я определил.
класс выглядит следующим образом:

Код: Выделить всё

public class Location
{
[Key]
public Guid Id { get; set; }

[Required]
public Guid WorkspaceID { get; set; }

[Required]
public string Name { get; set; }

public string ImagePath { get; set; }

public ICollection Floors { get; set; }
}
API:

Код: Выделить всё

 [HttpGet]
public IActionResult GetAllLocations()
{
return Ok(_locationManagementRepository.GetAllLoacations());
}
Метод доступа к данным:

Код: Выделить всё

public async Task GetAllLoacations()
{
var locations = new [] {
new Location{Id = Guid.NewGuid(), Name = "Location 1", WorkspaceID = Guid.NewGuid(),Floors = null, ImagePath = null},
new Location{Id = Guid.NewGuid(), Name = "Location 2", WorkspaceID = Guid.NewGuid(),Floors = null, ImagePath = null},
new Location{Id = Guid.NewGuid(), Name = "Location 3", WorkspaceID = Guid.NewGuid(),Floors = null, ImagePath = null}
};
return await Task.FromResult(locations);
}
Служба Blazor, запрашивающая API:

Код: Выделить всё

 public async Task GetAllLocations()
{
_httpClient.SetBearerToken(await _tokenManager.RetrieveAccessTokenAsync());

return await JsonSerializer.DeserializeAsync
(await _httpClient.GetStreamAsync($"api/location"),
new JsonSerializerOptions() { PropertyNameCaseInsensitive = true });
}
JSON, возвращаемый этому методу, выглядит следующим образом:

Код: Выделить всё

{"result":[{"id":"e029e1cb-3ea2-4b2c-acae-5e693d2ece46","workspaceID":"985f2695-f36e-4481-9b7c-b1e00bbb4ac3","name":"Location 1","imagePath":null,"floors":null},{"id":"c4ccb92b-9cc8-4e08-bba3-22f61c1fe7e5","workspaceID":"67d05f55-5bd4-4e8f-93b3-b3daa9155535","name":"Location 2","imagePath":null,"floors":null},{"id":"a42073da-239d-428e-a318-d3dc7cfd221b","workspaceID":"d3a14500-ddcd-486f-a96e-5c86373c092d","name":"Location 3","imagePath":null,"floors":null}],"id":2,"exception":null,"status":5,"isCanceled":false,"isCompleted":true,"isCompletedSuccessfully":true,"creationOptions":0,"asyncState":null,"isFaulted":false}
Я получаю следующую ошибку:

JsonException: значение JSON не удалось преобразовать в System.Collections.Generic .List

Как правильно передать это для десериализации данных, чтобы я мог передать их в свой компонент Blazor? Нужно ли мне создавать модель представления, имеющую одно свойство результата, определенное как список, или мне что-то не хватает в моем приложении API/Blazor, чтобы это просто работало!

Подробнее здесь: https://stackoverflow.com/questions/669 ... s-expected
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»