Newtonsoft JSON - obiekty dynamiczne
Używam biblioteki Newtonsoft JSON do wykonywania dynamicznej deserii w przychodzącym surowym JSON i znalazłem coś, czego po prostu nie potrafię wyjaśnić.
Punktem wyjścia jest następujący ciąg JSON:
{
"task": {
"dueDate": "2012-12-03T00:00:00"
}
}
Nic tam nie jest zbyt skomplikowane ...
W kodzie robię to:
var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson);
DateTime dueDate = dyn.task.dueDate.Value;
Ten kod działa od miesięcy i działa dobrze, jednak w niedawnej wersji testowej wystąpił następujący błąd:
„Newtonsoft.Json.Linq.JObject” nie zawiera definicji „zadania”
Śledzenie stosu: w CallSite.Target (Closure, CallSite, Object) w System.Dynamic.UpdateDelegates.UpdateAndExecute1 [T0, TRet] (strona CallSite, T0 arg0)
Teraz jest dziwne, wszystko zaczyna działać ponownie, jeśli zmienię powyższy kod z:
DateTime dueDate = dyn.task.dueDate.Value;
do
DateTime dueDate = dyn["task"]["dueDate"].Value;
Tak więc, chociaż jest to „naprawione”, nie rozumiem, dlaczego to rozwiązuje i jaka może być możliwa przyczyna. Czy ktoś ma jakieś pomysły