今天,我發現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序列化程序一樣) –