I am using the Newtonsoft JSON library to perform dynamic deserialisation on incoming raw JSON and have found something that I just can't explain.
The starting point is the following JSON string:
{
"task": {
"dueDate": "2012-12-03T00:00:00"
}
}
Nothing too complex there...
In code I am then doing this:
var dyn = JsonConvert.DeserializeObject<dynamic>(rawJson);
DateTime dueDate = dyn.task.dueDate.Value;
This code has been in place for months and works fine, however in a recent test build we were seeing the following error:
'Newtonsoft.Json.Linq.JObject' does not contain a definition for 'task'
Stack Trace: at CallSite.Target(Closure , CallSite , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
Now this is where is gets odd, everything starts to work again if I change the code above from:
DateTime dueDate = dyn.task.dueDate.Value;
to
DateTime dueDate = dyn["task"]["dueDate"].Value;
So, although this is "fixed" I don't understand why this fixes it and what the possible cause could be. Does anybody have any ideas