我使用Newtonsoft JSON庫執行傳入生JSON動態deserialisation和發現的東西,我只是無法解釋。Newtonsoft 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' 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)
現在,這是在得到奇,一切開始如果我從上面修改代碼重新工作:
DateTime dueDate = dyn.task.dueDate.Value;
到
DateTime dueDate = dyn["task"]["dueDate"].Value;
所以,雖然這是「固定」我不明白爲什麼會修復它,以及可能的原因是什麼。沒有任何人有任何想法
您是否更改了您使用的Json.NET版本? –
不,這是我的第一個想法 - 查看代碼和庫上的更改歷史記錄顯示沒有更改生活中(和工作)的內容 – MrEyes
您確定這不是「第一次機會異常」動態(也許你有錯誤登錄等增加細節水平)? – tpeczek