【问题标题】:How to use JSON.NET with ASP.NET MVC 4 Beta如何在 ASP.NET MVC 4 Beta 中使用 JSON.NET
【发布时间】:2012-04-16 06:36:22
【问题描述】:

为 JSON.NET 序列化程序替换标准序列化程序不是问题。下面的代码直接取自 Scott Hanselman 的博客

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 中是否有更新可以解决此问题?

【问题讨论】:

    标签: json.net asp.net-mvc-4 asp.net-web-api upshot


    【解决方案1】:

    这已经是 WebAPI 贡献的一部分。看看here。代码其实很简单。

    【讨论】:

    • WebAPI contrib 项目完全符合我的要求,但这不是问题的解决方案。 OnReadFromStreamAsync 方法的输出是 Task,返回的对象是 System.Web.Http.Data.ChangeSetEntry 类型,其中实体是 JObject 类型。美中不足的是 JObject 类型。
    【解决方案2】:

    ASP.NET MVC 4 仍处于测试阶段,有几个功能还不能 100% 工作。上次检查Newtonsoft.Json和JsonSerializer的集成是不完整的。在与 ASP.NET 团队的一些人交谈后,我了解到它正在开发中,但没有完成的时间表。

    【讨论】:

    • ASP.NET MVC 4 RC 包括 Newtonsoft.Json (JSON.NET)
    猜你喜欢
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 2013-10-08
    • 1970-01-01
    相关资源
    最近更新 更多