1

VB.NETでWebサービスを構築していますが、JSONを使用して回答したいと思います。現在、私の答えは次のようになっています

{\"myVar1\" : \"From moscow\", \"myVar2\" : \"With love\"}

"(およびCarriageReturn)を使用して、次のような応答ができるようにしたいと思います。

{"myVar1" : "From moscow", "myVar2" : "With love"}

この「in\」のトランスコーディングを回避するにはどうすればよいですか?

これが私のインターフェース定義です:

<OperationContract()>
<WebGet(UriTemplate:="/TemplateGet?ID={id}",
        ResponseFormat:=WebMessageFormat.Json, 
        BodyStyle:=WebMessageBodyStyle.Bare)>
Function TemplateGet(id As String) As String

私の答えはプレーンな文字列です:

Function TemplateGet(id As String) As String Implements ISearch.TemplateGet
    Dim reponse As String = "{""MyVar1"" : ""From moscow"", ""MyVar2"" : ""With love""}"
    Return reponse
End Function
4

1 に答える 1

1

私はVB.netの人ではないので(vbの例は見つかりませんでした)、リンクはc#を使用しますが、vbへの単純な変換では同じである必要があります。

wcfサービスを作成するときは、シリアル化(この場合はjson)を自分で作成しないでください。

オブジェクト(既知のタイプとして登録する必要があります-以下の例を参照)を返すことができ、結果はシリアル化されます。

オブジェクトを使用したwcfサービスの例:http://www.freddes.se/2010/05/19/wcf-knowntype-attribute-example/

あなたの場合、次のようなクラスを作成する必要があります。

   [DataContract]
   public class MyServiceResultClass
   {
       [DataMember]
       public string myVar1 {get; set;}

       [DataMember]
       public string myVar2 {get; set;}
   }

サービスの既知のタイプとして登録MyServiceResultClassし、メソッドを次のようなものに変更します。

   Function TemplateGet(id As String) As String Implements ISearch.TemplateGet
      Dim reponse As MyServiceResultClass = new MyServiceResultClass() // -- Change to vb syntax here
      Return reponse
   End Function

そしてそれはそれです...あなたはjsonで応答を得るでしょう

于 2012-06-20T13:58:46.647 に答える