JsonSerializationException: Невозможно десериализовать текущий объект JSON.в ядре asp.net - PullRequest
0 голосов
/ 07 июня 2019

Я создаю веб-API с использованием ядра asp.net и базы данных Cosmos. Я создаю API-интерфейс для получения всего элемента. Я получил следующую ошибку. Я предоставляю весь свой репозиторий, кодовый удар контроллера. Пожалуйста, помогите мне узнать, что я не так ??

Код контроллера:

  public async Task<IActionResult> FetchListAsync(
        [FromQuery]Guid? itemId)
    {
        var result =
            await _catalogRepository.FetchListAsync(
                itemId);

        return Ok(result);
    }

Код репозитория:

  public async Task<IEnumerable<Catalog>> FetchListAsync(
           Guid? itemId)
        {

            var feedOptions =
                  new FeedOptions
                  {
                      MaxItemCount = -1,
                      EnableCrossPartitionQuery = true
                  };
            var query = new SqlQuerySpec
            {
                QueryText = "SELECT * FROM c"

            };

            var orderDocumentQuery =
                _cosmosClient.CreateDocumentQuery<Catalog>(
                    UriFactory.CreateDocumentCollectionUri(
                        _azureCosmosDbOptions.Value.DatabaseId, "catalog"), query, feedOptions)
                    .AsDocumentQuery();

            var catlog = _cosmosClient.CreateDocumentQuery<Catalog>(UriFactory.CreateDocumentCollectionUri(
            _azureCosmosDbOptions.Value.DatabaseId, "catalog"), query, feedOptions).AsEnumerable().FirstOrDefault();

            var objResponse1 =
    JsonConvert.DeserializeObject<List<Catalog>>(catlog.ToString());


            return objResponse1;
        }

ошибка:

JsonSerializationException: Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип 'System.Collections.Generic.List`1 [CatalogAPI.Entities.Industy] потому что для десериализации типа требуется массив JSON (например, [1,2,3]) правильно. Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]) или измените десериализованный тип так, чтобы он был нормальным Тип .NET (например, не примитивный тип, такой как целое число, а не коллекция типа как массив или список), который может быть десериализован из JSON объект. JsonObjectAttribute также может быть добавлен к типу, чтобы заставить его десериализовать из объекта JSON. Путь 'Industy.Id', строка 1, позиция 117

1 Ответ

1 голос
/ 07 июня 2019
var catlog = _cosmosClient.CreateDocumentQuery<Catalog>(UriFactory.CreateDocumentCollectionUri(
            _azureCosmosDbOptions.Value.DatabaseId, "catalog"), query, feedOptions).AsEnumerable().FirstOrDefault();

Эта строка возвращает один объект.Вы пытаетесь разобрать строковое представление отдельного объекта как список этого объекта.JsonConvert не удастся, потому что он не найдет массив объектов для преобразования, кроме одного объекта JSON верхнего уровня.

Вы можете просто вернуть:

return new List<Catalog>{catlog};
...