2011-10-19 37 views
4

時忽略類的屬性我使用WCF使用這種格式的JSON服務:使用WCF ResponseFormat = WebMessageFormat.Json

[OperationContract] 
[ServiceKnownType(typeof(ComplexResult))] 
[WebInvoke(
      Method = "GET", 
      BodyStyle = WebMessageBodyStyle.Bare, 
      ResponseFormat = WebMessageFormat.Json)] 
MyClass MyFunction(string myParams); 

這個偉大的工程,但它有一個限制。我不能忽略我正在序列化爲JSON的類的屬性。如果我使用JavaScriptSerializer類,那麼我可以將[ScriptIgnore]屬性放在我想忽略的屬性上,並且它們不會在JSON中序列化,但這不適用於上述方法。

有沒有一種方法來排除使用ResponseFormat Json方法將序列化爲JSON的類的屬性?

回答

10

WCF默認使用DataContractJsonSerializer來序列化對象。根據MyClass是如何定義的,你可以使用不同的屬性,以阻止成員正在連載:

  • 如果MyClass的沒有任何屬性(即,這是一個「POCO」型),您可以使用[IgnoreDataMember]屬性在會員你不想系列化
  • 如果MyClass的裝飾有[Serializable],你可以使用[NotSerialized]屬性中的成員
  • 如果MyClass的裝飾有[DataContract],那麼你只需要不加[DataMember]到你不想序列化的成員。
+1

很好,謝謝! – Justin

相關問題