1

错误:无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.ObjectModel.ObservableCollection 1[System.Collections.ObjectModel.ObservableCollection1[DynamicLayoutSample.ElementList]]”,因为该类型需要 JSON 数组(例如 [1, 2,3]) 正确反序列化。要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型,使其成为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。路径“页面”,第 1 行,位置 8。

使用 xamarin 表单中的 refit 从 Web 服务获取数据时出现此错误。在模型类下方

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();

}
4

1 回答 1

0

请按照代码为我工作

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);
于 2017-08-23T05:21:02.793 回答