Ошибка при получении сведений из веб-службы в формах refit xamarin

Ошибка: невозможно десериализовать текущий объект JSON (например, {"name":"value"}) в тип 'System.Collections.ObjectModel.ObservableCollection1[System.Collections.ObjectModel.ObservableCollection1 [DynamicLayoutSample.ElementList]] ', поскольку для корректной десериализации для типа требуется массив JSON (например, [1,2,3]). Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип так, чтобы это был нормальный тип.NET (например, не примитивный тип, например, целое число, а не тип коллекции, например, массив или список), которые можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы заставить его десериализоваться из объекта JSON. Путь "страница", строка 1, позиция 8.

Получил эту ошибку при получении данных из веб-сервиса с помощью refit в формах xamarin. Ниже класса модели

public class ApiResponse 
    {
        [JsonProperty(PropertyName = "page")]
        public ObservableCollection<ObservableCollection<ElementList>> items { get; set; }

    }

    public class ElementList
    {
        [JsonProperty("page")]
        public string page { get; set; }

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

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

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

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

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

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

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

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

и мой JSON,

{
    "page": [
        [
            {
                "page": "2",
                "name": "element",
                "objectid": "rectelement_1",
                "width": "29%",
                "height": "9%",
                "top": "21%",
                "left": "15%",
                "transform": "0deg",
                "backgroundcolor": "rgb(0, 0, 0)"
            },
            {
                "page": "2",
                "name": "element",
                "objectid": "circleelement_1",
                "width": "33%",
                "height": "12%",
                "top": "20%",
                "left": "44%",
                "transform": "0deg",
                "backgroundcolor": "rgb(0, 0, 0)"
            }
        ]
    ]
}

Метод сервисного вызова,

ObservableCollection<ObservableCollection<ElementList>> result { get; set; }
result = new ObservableCollection<ObservableCollection<ElementList>>();
result = await api_interface.GetElements();

и это мой интерфейс

interface ApiInterface
{

    [Get("/magazine_pagevalue.php?mid=1&issueno=1")]
    Task<ObservableCollection<ObservableCollection<ElementList>>> GetElements();

}

1 ответ

Пожалуйста, следуйте коду его работы для меня

public class ApiResponse 
    {
        public List<List<ElementList>> page { get; set; }    
    }

interface ApiInterface
{

    [Get("/magazine_pagevalue.php?mid=1&issueno=1")]
    Task<List<List<ElementList>>> GetElements();

}

var resultTask = api_interface.UserInitiated.GetElements();


var result = await Policy
                        .Handle<Exception>()
                        .RetryAsync(retryCount: 1)
                        .ExecuteAsync(async () => await resultTask);
Другие вопросы по тегам