1

当我调用方法XMLData时,WebMessageFormat.Xml我得到如下响应:

在此处输入图像描述

当我调用方法XMLData时,WebMessageFormat.Json我得到如下响应:

在此处输入图像描述

WCF 代码:

namespace RestService
{
    [ServiceContract]
    public interface IRestServiceImpl
    {
        [OperationContract]
        [WebGet(ResponseFormat = WebMessageFormat.Json)]
        string XMLData(string id);

        [OperationContract]
        [WebGet(ResponseFormat = WebMessageFormat.Json)]     
        string JSONData();
    }

    public class RestServiceImpl : IRestServiceImpl
    {
        #region IRestServiceImpl Members

        public string XMLData(string id)
        {
            return "You requested product " + id;
        }

        public string JSONData()
        {
            return "You requested product ";
        }

        #endregion
    }
}

配置文件:

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="None" />
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  <system.serviceModel>
    <services>
      <service name="RestService.RestServiceImpl">
        <endpoint name="jsonEP"
                  address=""
                  binding="webHttpBinding"
                  behaviorConfiguration="json"
                  contract="RestService.IRestServiceImpl"/>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="json">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>

我的代码有什么问题?

4

1 回答 1

1

JSON 是键值对的无序集合的序列化格式,其中“:”字符分隔键和值,以逗号分隔,通常包含在大括号(对象)、方括号(数组)或引号(字符串)中

虽然您的响应是 JSON 格式,但它也是字符串格式的纯文本!没有要序列化的对象/数组,也没有用于响应的键/值对,这就是 firebug 在网络选项卡中不显示任何 JSON 预览的原因

尝试在 REST 服务中返回一些复杂对象,您将在 Firebug 调试器中看到 JSON 响应预览:

public class RestServiceImpl : IRestServiceImpl
{
    public JSONResponse JSONData(string id)
    {
        return new JSONResponse { Response = "You requested product " + id };
    }
}

public class JSONResponse
{
    public string Response { get; set; }
}
于 2013-01-23T17:28:27.410 回答