fra*_*llo 3 rest json xml-serialization asp.net-mvc-4 asp.net-web-api
我正在使用新的Microsoft MVC 4 ApiController类和WebAPI构建RESTful Web服务.我有一个Person类:
public class Person
{
public string surname { get; set; }
public string name{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
并且默认的HTTP GET方法有效,返回以下内容:
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<surname>John</surname>
<name>Titor</name>
</Person>
Run Code Online (Sandbox Code Playgroud)
我现在需要一个注释集,它允许我更改默认的内部对象的名称,例如我想要更改surname
为msurname
.我尝试添加以下内容:
[XmlElement("msurname")]
Run Code Online (Sandbox Code Playgroud)
注释,但只有Accept
在我的请求的标题包含application/xml
(当然)时才有效.我已经尝试并使用了[DataMember]
注释,完全被忽略了.
是否有一个注释集我可以在WebAPI中使用这个ApiController来序列化为XML和JSON格式?谢谢.
编辑:更正,如果我使用[DataMember]
和[DataContract]
注释,我得到了JSON序列化所需的行为,但不是XML.如果我使用相反的事情[XmlElement]
.
您在DataMember中看到的行为是因为默认情况下WebAPI使用XmlSerializer,而不是DataContractSerializer.但是,JSON目前默认使用JSONDataContractSerializer.但是将来它不会.您可以通过设置将XML更改为XmlDataContractSerializer
GlobalConfiguration.Config.Formatters.XmlDataContractSerializer = true;
Run Code Online (Sandbox Code Playgroud)
这样,JSON和XML格式都将使用DataContractSerializer.
归档时间: |
|
查看次数: |
4687 次 |
最近记录: |