2012-04-16 79 views
2

爲JSON.NET序列化程序交換標準序列化程序是不成問題的。下面的代碼直接取出斯科特Hanselman的博客的如何使用JSON.NET與ASP.NET MVC 4 Beta

http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

JsonSerializerSettings serializerSettings = new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }; 
serializerSettings.Converters.Add(new IsoDateTimeConverter()); 
GlobalConfiguration.Configuration.Formatters[0] = new JsonNetFormatter(serializerSettings); 

但是,這樣做後,我救不了什麼,AJAX調用失敗。我得到的錯誤是:

此DataController不支持操作'插入'實體'JObject'。

JObject是從JSON.NET序列化程序返回的內容。它不符合正在附加到實體的「__type」屬性。

例JSON:

[{"Id":"0","Operation":1,"Entity":{"__type":"Product:#Catalog.Models","Sku":"adsfadsf"}}] 

有什麼我可以做短浸入JSON.NET源代碼來解決這個問題的?有沒有更新到ASP.NET MVC 4 Beta來解決這個問題?

回答

0

ASP.NET MVC 4仍處於測試階段,有幾項功能尚未完全正常工作。上次我檢查Newtonsoft.Json和JsonSerializer的集成並不完整。在與ASP.NET團隊的一些人交談之後,我瞭解到它正在開發中,但沒有完成的時間表。

+3

ASP.NET MVC 4 RC包含Newtonsoft.Json(JSON.NET) – mhu 2012-06-14 08:42:37

0

這已經是WebAPI貢獻的一部分。看看here。代碼實際上非常簡單。

+0

WebAPI contrib項目的確做了我所做的事情,但那不是問題的解決方案。方法OnReadFromStreamAsync的輸出是任務,並且返回的對象類型爲System.Web.Http.Data.ChangeSetEntry,其中實體類型爲JObject。 JObject類型是美中不足的。 – 2012-04-16 17:28:04