JSON 文字列を ObservableCollection に解析していますが、これを行うと Json.net が次のエラーをスローします。
Newtonsoft.Json.JsonSerializationException: 現在の JSON 配列 ([1,2,3] など) を型 'MVPTracker.ViewModels.DataModels+League+Position' に逆シリアル化できません。型には JSON オブジェクト ({"name":" など) が必要なためです。 value"}) を使用して、正しく逆シリアル化します。このエラーを修正するには、JSON を JSON オブジェクト (例: {"name":"value"}) に変更するか、逆シリアル化された型を配列または List のようなコレクション インターフェイス (ICollection、IList など) を実装する型に変更します。 JSON 配列から逆シリアル化されます。JsonArrayAttribute を型に追加して、強制的に JSON 配列から逆シリアル化することもできます。
私のDataModel、ViewModel、およびLoadingは以下のとおりです。
データ・モデル:
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; }
}
}
ロード/ViewModel:
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);
}
ObservableCollection を IList/ICollection に設定しようとしましたが、役に立ちませんでした。
編集: これが私が解析している json です: http://pastebin.com/QVnikitV