首先,WCF直接提供了返回JSON對(duì)象。
如果我們沒(méi)有使用WCF,我們可以通過(guò)System.Runtime.Serialization.Json.DataContractJsonSerializer類(lèi)(System.ServiceModel.Web.dll)或System.Web.Script.Serialization.JavaScriptSerializer類(lèi)(System.Web.Extensions.dll)。
昨天在使用DataContractJsonSerializer類(lèi)的時(shí)候發(fā)生件奇怪的事情,同樣的代碼在我機(jī)子上可以運(yùn)行,在另一臺(tái)機(jī)子上卻運(yùn)行不過(guò)。拋出不可序列化的運(yùn)行時(shí)異常。提示需要在序列化的類(lèi)上加定制特性Serializable,或者類(lèi)上加DataContract且成員加DataMember。
在類(lèi)上使用Serializable,會(huì)序列化字段,而非屬性,輸出的不是我想要的(一堆小寫(xiě)的字段,我要的是大寫(xiě)的公有屬性)。而使用DataContract和DataMember,則必須每個(gè)要輸出的屬性都加上DataMember,這也比較麻煩,不是我希望的。然后同事找到了JavaScriptSerializer類(lèi),
經(jīng)測(cè)試,不需要顯式的添加定制特性,它會(huì)默認(rèn)輸出所有公有屬性。OKay,這便是我想要的。
本文出處:http://www.cnblogs.com/zhucai