在Web API中未序列化的只读模型属性

时间:2013-01-22 16:11:14

标签: visual-studio-2010 asp.net-mvc-4 asp.net-web-api

根据标题,我发现我的只读模型属性未在我的Web API项目中序列化。 MVC 4 Web API,VS2010。

我见过很多像this stackoverflow question这样的帖子,声明MVC 4 Web API beta 不支持JSON序列化只读属性。但是许多其他参考文献指出最终版本使用的是JSON.NET而不是DataContractJsonSerializer,所以应该解决这个问题。

此问题是否已解决?如果没有,我是否只是为了获得序列化而被迫投入假装?


更正,确实似乎与JSON一起使用(抱歉!),但XML显示问题。与之前相同的问题,但在XML序列化的上下文中。

1 个答案:

答案 0 :(得分:7)

默认的JSON序列化程序现在是Json.NET。因此,readonly属性序列化应该可以工作,而无需你做任何事情。

对于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()