簡體   English   中英

如何在WCF RESTful服務中以json格式返回IList?

[英]How to return a IList in json format in a WCF RESTful service?

在WCF 3.5服務中是否可能具有這樣的方法簽名(優惠是具有DataContractAttribute和DataMemberAttribute的自定義類):

[OperationContract]
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
IList<Offer> GetOffers();

因為如果在Web瀏覽器中鍵入相應的URL,則會收到序列化錯誤(我認為這是因為IList不具有Seri​​alizable屬性,所以json序列化程序無法對其進行序列化)。

解決方法是使用像這樣的方法簽名:

[OperationContract]
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
List<Offer> GetOffers();

產生相同的序列化輸出(一個簡單的json數組),但是由於第一個使用XML,我想知道是否有一種方法可以使其在json中工作,並保持相同的簽名。

編輯:好的,它也不能與XML序列化一起使用,因此該行為似乎是正常的。 問題仍然存在,是否可以保留此簽名並更改序列化程序的行為以使其起作用? 怎么樣?

我相信您需要將使用的硬收集類型添加到已知類型列表中。 http://msdn.microsoft.com/en-us/library/ms730167.aspx一個概念上的說明,請參閱http://msdn.microsoft.com/en-us/library/ms751512.aspx為樣本,並請參見http://msdn.microsoft.com/zh-cn/magazine/gg598929.aspx ,以獲取撰寫得很好的《 MSDN雜志》文章。

另外,請在此處查看最重要的兩個答案: 如何以編程方式配置WCF已知類型?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM