今天,我发现MVC4使用的XML和Json序列化程序之间存在着很大的不同。MVC4中的XML和Json序列化程序之间的区别
我试图返回一个对象,看起来像这样:
public class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
public string FullName{ get{ return FirstName + " " + LastName }}
}
当客户端请求JSON作为结果,我得到FirstName
,LastName
和FullName
与预期值返回。
但是,当客户端请求XML数据时,他只得到FirstName
和LastName
。
这在我看来非常糟糕,因为这意味着客户端将根据他们请求的格式获取不同的数据。
看起来这是故意的,因为Json序列化程序的文档说默认包含只读属性,并且默认情况下它们被排除在外的Xml序列化程序。
所以我的问题是:如何更改MVC4使用的Xml序列化程序,以便默认包含那些只读的。我知道它可以管理,因为如果将DataContract
属性添加到类中,并且将DataMember
属性添加到类的每个属性,它也会返回只读变量,但我真的不想这样做。
重新阅读我的问题:我做**不**想用'DataContract/DataMember'属性标记所有的类就是为了这个。我想更改序列化程序中的设置以默认包含只读属性(就像Json序列化程序一样) –