私は、次のデータモデル私はトラブルシリアライズを有するjson.net newtsoftを使用してデシリアライズしています複雑なデータモデルとjson.net serizalization問題
class Tournament{
int Id { get; set;}
ICollection<League> Leagues { get; set;}
}
class League{
int Id {get;set;};
Tournament Parent { get; set;}
ICollection<Player> Players { get; set;}
ICollection<Round> { get; set;}
}
class Player{
int Id { get; set;}
League Parent { get; set;}
ICollection<Game> Games { get; set;}
}
class Round{
int Id { get; set;}
ICollection<Game> Games { get; set;}
League Parent { get; set;}
}
class Game{
int Id { get; set;}
Player playerOne { get; set;}
Player playerTwo { get; set;}
Round Parent { get; set;}
}
を持っています。
私は、次のJSONネット設定
JsonConvert.DefaultSettings =() => new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Local,
TypeNameHandling = TypeNameHandling.Objects,
Formatting = Formatting.Indented,
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
PreserveReferencesHandling = PreserveReferencesHandling.Objects,
};
しかし、あなたは、それは正しくない出力ファイルから見ることができるように、私はその希望を使用して、次のファイルhttps://api.myjson.com/bins/1aa4kl
を取得していますゲームストアプレイヤーやゲームへの参照は正しく参照されていません。そしてdesrizalingでは、リーグからトーナメントまでを除いて、親子関係のどれもマッピングされていません。
私はどのクラスにもデータ属性がありません。
誰かが間違っているとアドバイスできますか?データモデルを変更する必要がありますか?
public class JsonRoot
{
[JsonProperty("$id")]
public string Id_X { get; set; }
[JsonProperty("$type")]
public string Type_X { get; set; }
public bool UploadedToDatabase { get; set; }
public string Id { get; set; }
public bool TournamentStarted { get; set; }
public int MaximumNumberOfRounds { get; set; }
public string Name { get; set; }
public League[] Leagues { get; set; }
public object SaveFilePath { get; set; }
public object SavedFileName { get; set; }
public object DefaultPairingMethod { get; set; }
public int DefaultPairingLag { get; set; }
public bool IsTournamentRanked { get; set; }
public string UserId { get; set; }
public object StreamUrl { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
public int NumberOfPlacesForPrizes { get; set; }
public bool isTournamentDirector { get; set; }
}
[JsonProperty("$id")]
ここで必要とされているが$
がpropertynamesで許可されていません原因:
おかげ
私はあなた 'JSON' [ここ](http://json2csharp.com/)貼り付けるとクラスは全く異なる探しています。これは、あなたの作業モデルを再作成するのに役立ちます。 –
Felixに感謝します。私はそれをチェックしました。私のデータモデルとはまったく異なります。私はjsonのシリアライゼーションが非常に異なる理由は分かりません – Jack
私はそれが単純化できると確信しています。例えば、 'PlayerTwo4'は' PlayerTwo3'と同じモデルにマップすることができます...それは少し異なりますが、 'Player'クラスに'変数(nullable) 'プロパティを追加することでこれを修正できると思います。 –