如何在WCF RESTful服务中返回json格式的IList?
在WCF 3.5服务中是否可能有这样的方法签名(Offer是一个带有DataContractAttribute和DataMemberAttribute的自定义类):如何在WCF RESTful服务中返回json格式的IList?,wcf,json,serialization,ilist,Wcf,Json,Serialization,Ilist,在WCF 3.5服务中是否可能有这样的方法签名(Offer是一个带有DataContractAttribute和DataMemberAttribute的自定义类): [运营合同] [WebGet(UriTemplate=“GetOffers”,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Bare)] IList GetOffers(); 因为如果我在web浏览器中键入相应的URL,就会出现序列化错误(我认
[运营合同]
[WebGet(UriTemplate=“GetOffers”,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Bare)]
IList GetOffers();
因为如果我在web浏览器中键入相应的URL,就会出现序列化错误(我认为这是因为IList没有Serializable属性,所以json序列化程序无法序列化它)
解决方法是使用如下方法签名:
[OperationContract]
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
List<Offer> GetOffers();
[运营合同]
[WebGet(UriTemplate=“GetOffers”,ResponseFormat=WebMessageFormat.Json,BodyStyle=WebMessageBodyStyle.Bare)]
列出GetOffers();
结果是相同的序列化输出(一个简单的json数组),但由于第一个数组使用XML,我想知道是否有办法让它在json中工作,保持相同的签名
编辑:好的,它也不适用于XML序列化,因此行为似乎是正常的。问题仍然存在,是否可以保留此签名并更改序列化程序行为以使其正常工作?如何操作?我认为您需要将使用的硬收集类型添加到已知类型列表中。有关概念说明,请参阅,有关示例,请参阅,有关MSDN杂志文章的详细信息,请参阅
另外,请参见此处的前两个答案:我认为您需要将您使用的硬收集类型添加到已知类型列表中。有关概念说明,请参阅,有关示例,请参阅,有关MSDN杂志文章的详细信息,请参阅 此外,请参见此处的前两个答案:
[OperationContract]
[WebGet(UriTemplate = "GetOffers", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
List<Offer> GetOffers();