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

tca*_*vin 6 visual-studio-2010 asp.net-mvc-4 asp.net-web-api

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

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

这个问题是否得到了解决?如果没有,我是否只是为了获得序列化而被迫投入假冒产品?


校正,它似乎与JSON工作(对不起!),但XML表现出的问题.与之前相同的问题,但在XML序列化的上下文中.

You*_*oui 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 });
Run Code Online (Sandbox Code Playgroud)

将此代码放在一个名为的函数GlobalConfiguration.ConfigureApplication_Start.默认情况下,这将是WebApiConfig.Register().