C# Json.net反序列化错误

C# Json.net反序列化错误,c#,.net,C#,.net,我正在将JSON字符串解析为ObservableCollection,但当我这样做时,JSON.net会抛出以下错误: Newtonsoft.Json.JsonSerializationException:无法将当前Json数组(例如[1,2,3])反序列化为类型“MVPTracker.ViewModels.DataModels+League+Position”,因为该类型需要一个Json对象(例如{“name”:“value”})才能正确反序列化。 要修复此错误,请将JSON更改为JSON对象

我正在将JSON字符串解析为ObservableCollection,但当我这样做时,JSON.net会抛出以下错误:

Newtonsoft.Json.JsonSerializationException:无法将当前Json数组(例如[1,2,3])反序列化为类型“MVPTracker.ViewModels.DataModels+League+Position”,因为该类型需要一个Json对象(例如{“name”:“value”})才能正确反序列化。 要修复此错误,请将JSON更改为JSON对象(例如{“name”:“value”}),或将反序列化类型更改为数组或实现可从JSON数组反序列化的集合接口(例如ICollection、IList)类似列表的类型。还可以将JsonArrayAttribute添加到类型中,以强制它从JSON数组反序列化

我的数据模型、视图模型和加载如下:

数据模型:

public class League
    {
        public string name { get; set; }
        public string code { get; set; }
        public string imageUrl { get; set; }
        public Position positions = new Position();

        public class Position
        {
            public string name { get; set; }
            public string code { get; set; }
            public string imageUrl { get; set; }
            public string[] statistics { get; set; }
        }
    }
加载/查看模型:

private ObservableCollection<DataModels.League> _leagues = new ObservableCollection<DataModels.League>();
    public ObservableCollection<DataModels.League> Leagues
    {
        get { return _leagues; }
        set { _leagues = value; NotifyPropertyChanged("Leagues"); }
    }

    public async void Load()
    {
        string leaguesJSON = await ServerConnector.LoadOrganizations();

        Leagues.Clear();
        Leagues = JsonConvert.DeserializeObject<ObservableCollection<DataModels.League>>(leaguesJSON);
    }
private observetecollection _leagues=new observetecollection();
公开募捐联盟
{
获取{return\u leagues;}
设置{u leagues=value;NotifyPropertyChanged(“leagues”);}
}
公共异步无效加载()
{
string leaguesJSON=await ServerConnector.LoadOrganizations();
Leagues.Clear();
Leagues=JsonConvert.DeserializeObject(leaguesJSON);
}
我已尝试将ObservableCollection设置为IList/ICollection,但没有效果


编辑:这里是我正在解析的json:

C代码中的
位置
字段表示
位置
类型的单个对象。JSON对象的
位置
字段表示一个数组

因此,您的C#代码需要更改为数组以匹配:

public Position[] positions { get; set; }

而且它工作得很好。非常感谢,真不敢相信我忽略了这么小的东西。没问题——有时候只需要第二双眼睛。