JsonSerializationException: Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип - PullRequest
0 голосов
/ 07 июня 2019

Я занимаюсь разработкой веб-API. Я получил следующую ошибку.та же самая структура кода работает для fetchbyid, post, edit.Что я здесь не так.Помогите мне, пожалуйста.Catalog.cs:

  public class Catalog
    {
        [JsonProperty("id")]
        public Guid? Id { get; set; }

        [JsonProperty("VendorName")]
        public string VendorName { get; set; }

       // public List<Industy> Industy { get; set; }
        public Industy Industy { get; set; }

        public Catalog()
        {
            if (Id == null)
            {
                Id = Guid.NewGuid();
            }
            else
            {
                Id = Id;
            }

         //   this.Industy = new List<Industy>();
        }
    }



   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 orderList =
                new List<Catalog>();
            Console.WriteLine(orderDocumentQuery.ToString());

            while (orderDocumentQuery.HasMoreResults)
            {
                orderList.AddRange(
                    await orderDocumentQuery.ExecuteNextAsync<Catalog>());
            }

            return orderList;
        }

ошибка:

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

Что я делаю неправильно ??

1 Ответ

2 голосов
/ 07 июня 2019

Объект POCO в базе данных Cosmos должен иметь поле id, чтобы быть строкой.

Вам необходимо заменить public Guid? Id { get; set; } на public string Id { get; set; }.

...