2016-12-21 5 views
0

私はhttp invokable wcfサービスメソッドを持っています。jsonにオブジェクトをシリアライズすると二重引用符が生成されます

[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/CheckHMAC/{hMac}")] 
     public string CheckId(string Id) 
     { 
      Result result = new Result() { OTP = 1, IsSuccessful = false, CustomerId = "" }; 
      return JsonConvert.SerializeObject(result); 
     } 

この方法では、次のような出力が生成されます。

"{\" isSuccessfulと\ ":偽、\" OTP \ ":1、\" のCustomerId \ ":\" \ "}"

は、この方法を使用するクライアントは、これを訴えますフォーマットは有効ではないので、私は別のクライアントでそれをテストしたし、はい、それは有効ではないようです。これまでのところ、私はこのような問題は一度もなく、出力は簡単にデシリアライズする必要があります。なぜjsonオブジェクトが二重引用符で囲まれていますか?有効なjson文字列を取得するにはどうすればよいですか?

{ "isSuccessfulと":偽、 "OTP":1、 "CustomerIdの": ""}

答えて

1

まあ、私が長い間、検索にもかかわらず、このpostを逃したようです。ここで間違っているのは、メソッドシグネチャです。string;

..the APIコントローラは、リテラル、その文字列は二重引用符で包み、 バックスラッシュでエスケープする文字列内の任意の他の特殊文字を引き起こすことになりますJavaScriptの文字列 などの文字列をシリアル化します。

したがって、オブジェクト自体を返すだけで、jsonデータがクライアントに対して有効になります。

[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/CheckHMAC/{hMac}")] 
public Result CheckId(string Id) 
     { 
      Result result = new Result() { OTP = 1, IsSuccessful = false, CustomerId = "" }; 
      return result; 
     } 
関連する問題