【发布时间】:2013-12-20 16:25:12
【问题描述】:
在问了这个question 之后,我试图在 web api 2 中掌握所有这些序列化的东西,我读了这个 http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
但现在我很困惑
1 在我的 webapiconfig 中我没有这行
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
所以我假设我使用的是默认的 Json.net 序列化程序。无论如何,我仍然可以在一个类中使用 DataContract,因此只有用 DataMember 属性修饰的属性才会被序列化。这两个假设是否正确?
2 如果我不使用 DataContract 装饰一个类,所有属性都将被序列化。 Json.net 和 DataContractJsonSerializer 都会发生这种情况
3 如果我更改(如在我链接的问题中)序列化程序仍然使用它的解析器,是因为它是 Json.net 的一件事还是一件事与另一件事无关?因为如果我在全局中使用它
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
即使它没有引发任何问题,它似乎也没有发现它(也没有使用自定义的 contractresolver)
3 如果我有一个派生自另一个类的类,并且我用 DataContract 装饰父类,在我看来,我必须使用 DataMember 装饰子类的属性以对其进行序列化。还是我做错了什么?
谢谢
【问题讨论】:
标签: c# serialization asp.net-web-api