Newtonsoft JSON ライブラリを使用して、受信した生の JSON に対して動的な逆シリアル化を実行していますが、説明できないものを見つけました。
出発点は、次の JSON 文字列です。
{
"task": {
"dueDate": "2012-12-03T00:00:00"
}
}
それほど複雑なことはありません...
コードで私はこれをやっています:
var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson);
DateTime dueDate = dyn.task.dueDate.Value;
このコードは数か月間配置されており、正常に動作しますが、最近のテスト ビルドで次のエラーが発生しました。
「Newtonsoft.Json.Linq.JObject」には「タスク」の定義が含まれていません
スタック トレース: CallSite.Target(Closure , CallSite , Object ) で System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite サイト, T0 arg0) で
上記のコードを次のように変更すると、すべてが再び機能し始めます。
DateTime dueDate = dyn.task.dueDate.Value;
に
DateTime dueDate = dyn["task"]["dueDate"].Value;
したがって、これは「修正済み」ですが、なぜこれが修正されるのか、考えられる原因は何なのかわかりません。誰にもアイデアはありますか