我正在用新的Microsoft MVC 4 ApiController class and WebAPI构建RESTful Web服务。 我有一个Person类:更改ASP .NET MVC 4的内部对象的名称WebAPI序列化(XML/JSON)
public class Person
{
public string surname { get; set; }
public string name{ get; set; }
}
和默认的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>
我现在需要一个注解集,它可以让我改变默认的内部对象的名称,例如,我想将surname
更改为msurname
。我曾尝试加入以下内容:
[XmlElement("msurname")]
注释,但只有当我的请求的Accept
头包含application/xml
(当然)的作品。我试过并使用了[DataMember]
注释,这是完全忽略的。
是否有一个注释集可以在WebAPI中使用此ApiController进行XML和JSON格式的序列化?谢谢。
编辑:修正,如果我用[DataMember]
和[DataContract]
注释,我得到JSON序列化所需的行为,但不与XML。如果我使用[XmlElement]
,会发生相反的情况。
太好了,谢谢!我已经在我的'Global.asax.cs Application_Start'中放入了下面一行(与你所建议的不同):'GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseDataContractSerializer = true;' – frapontillo 2012-03-12 12:44:17
顺便说一下,未来的默认行为? JSON会使用与XmlSerializer具有相同超类的序列化程序吗? – frapontillo 2012-03-12 12:54:24
@MacGyver号他们正在寻找用JSON.Net替换默认的JSON序列化程序。但是,您始终可以将Formatters集合更改为仅使用所需的集合。 – 2012-03-12 14:00:45