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 に答える