【问题标题】:How to return a IList in json format in a WCF RESTful service?如何在 WCF RESTful 服务中返回 json 格式的 IList?
【发布时间】:2011-02-07 12:56:50
【问题描述】:

是否可以在 WCF 3.5 服务中具有这样的方法签名(Offer 是具有 DataContractAttribute 和 DataMemberAttribute 的自定义类):

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

因为如果我在网络浏览器中输入相应的 URL,我会得到一个序列化错误(我认为这是因为 IList 没有 Serializable 属性所以 json 序列化程序无法序列化它)。

解决方法是使用这样的方法签名:

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

产生相同的序列化输出(一个简单的 json 数组),但由于第一个使用 XML,我想知道是否有办法让它在 json 中工作,保持相同的签名。

编辑:好的,它也不适用于 XML 序列化,所以行为似乎是正常的。问题仍然存在,是否可以保留此签名并更改序列化程序行为以使其正常工作?怎么样?

【问题讨论】:

    标签: wcf json serialization ilist


    【解决方案1】:

    我相信您需要将您使用的硬集合类型添加到已知类型列表中。请参阅http://msdn.microsoft.com/en-us/library/ms730167.aspx 以获得概念性解释,请参阅http://msdn.microsoft.com/en-us/library/ms751512.aspx 以获得示例,并请参阅http://msdn.microsoft.com/en-us/magazine/gg598929.aspx 以获得非常出色的 MSDN 杂志文章。

    另外,请在此处查看前两个答案:How do you configure WCF known types programmatically?

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多