6

根据标题,我看到我的只读模型属性没有在我的 Web API 项目中序列化。MVC 4 Web API,VS2010。

我看过很多类似这个 stackoverflow question的帖子,其中指出 MVC 4 Web API beta不支持只读属性的 JSON 序列化。但许多其他参考资料表明最终版本使用 JSON.NET 而不是 DataContractJsonSerializer,因此应该解决该问题。

这个问题是否已解决?如果不是,我是否被迫放入假二传手只是为了获得序列化?


更正,它似乎确实适用于 JSON(对不起!),但 XML 会出现问题。与以前相同的问题,但在 XML 序列化的上下文中。

4

1 回答 1

7

默认的 JSON 序列化程序现在是 Json.NET。因此,只读属性序列化应该可以工作,而您根本不需要做任何事情。

对于 XML,在 4.5 中,我们将此标志添加到 DataContractSerializer:

http://msdn.microsoft.com/en-us/library/vstudio/system.runtime.serialization.datacontractserializersettings.serializereadonlytypes.aspx

您应该能够编写如下内容:

config.Formatters.XmlFormatter.SetSerializer(myType, new DataContractSerializer(myType, new DataContractSerializerSettings() { SerializeReadOnlyTypes = true });

将此代码GlobalConfiguration.Configure放在Application_Start. 默认情况下,这将是WebApiConfig.Register().

于 2013-01-22T16:17:35.180 回答