C# Json.net反序列化错误
我正在将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数组反序列化 我的数据模型、视图模型和加载如下: 数据模型: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对象
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; }
而且它工作得很好。非常感谢,真不敢相信我忽略了这么小的东西。没问题——有时候只需要第二双眼睛。