2012-04-16 61 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