如何从WCF服务返回Json?

时间:2009-12-02 03:18:02

标签: wcf json

我在下面的模板中启用了一个支持Ajax的WCF服务。我该怎么做才能让它返回JSon而不是XML? 感谢。

using System; 
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;

[ServiceContract(Namespace = "WCFServiceEight")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class CostService
{
    // Add [WebGet] attribute to use HTTP GET
    [OperationContract]
    [WebGet]
    public double CostOfSandwiches(int quantity)
    {
        return 1.25 * quantity;
    }
}

2 个答案:

答案 0 :(得分:7)

你试过了吗?

[WebGet(ResponseFormat= WebMessageFormat.Json)]

答案 1 :(得分:1)

如果您想使用$.ajax({ type: "POST", ...)中的POST动词,则需要使用[WebInvoke(Method="POST"]标记方法。

由于您使用[WebGet]标记了它(相当于[WebInvoke(Method="GET")]),您应该使用GET动词来调用服务,例如:

$.ajax({ type: "GET", ...)或使用$.get(url, data, ...)(有关详情,请参阅jQuery.get)。

你需要将ResponseFormat设置为Json,正如tomasr已经指出的那样。