我使用这种格式使用WCF进行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的类的属性?
答案 0 :(得分:11)
默认情况下,WCF使用DataContractJsonSerializer
来序列化对象。根据{{1}}的定义方式,您可以使用不同的属性来阻止成员序列化:
MyClass
属性[IgnoreDataMember]
,您可以在这些成员中使用[Serializable]
属性[NotSerialized]
,那么您只需不将 [DataContract]
添加到您不想序列化的成员。