Ошибка при получении сведений из веб-службы в формах refit xamarin
Ошибка: невозможно десериализовать текущий объект JSON (например, {"name":"value"}) в тип 'System.Collections.ObjectModel.ObservableCollection
1[System.Collections.ObjectModel.ObservableCollection
1 [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);