2011-12-16 14 views
1

最近、NewtonsoftのJSON.netキットではなく、組み込みのWCF機能を使用してJSONを出力しようとしました。WCF JSONシリアライズを読む

JSONの出力は大丈夫ですが、WCFに残っている奇妙な既定のシリアル化マークアップの後ろにはまだ残っています。ここで

はGETをやってクライアントに出力されているものです。

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{"LobbyID":2,"LobbyID2":0}</string> 

私は「のxmlns =」http://schemas.microsoft.com/2003/10/Serializationを取り除くことがしたいと思います/」可能ならば、それだけでまっすぐなJSONデータ型応答であるので、ここで

が関連DataContractsロビークラスです。

[DataContract(Name = "LobbyContract", Namespace = "xx")] 
public class Lobby 
{ 
    [DataMember(Name="LobbyID")] 
    private int LobbyID; 

    [DataMember(Name = "LobbyID2")] 
    private int LobbyID2; 

、その後、私は、このコール機能を持​​っている:

[OperationContract] 
    [Description("PlaceHolder")] 
    [WebGet(UriTemplate = "xxx/xx/{gameID}/{format}") ] 
    public string FindGameProposals(string gameID, string format) 
    { 

     Lobby lobby = new Lobby(); 
     lobby.SetLobbyID(Convert.ToInt32(gameID)); 

     string returnValue = ""; 
     if (format == "xml") 
     { 

     } 

     else if (format == "json") 
     { 

      DataContractJsonSerializer serializer = new DataContractJsonSerializer(lobby.GetType()); 
      MemoryStream memoryStream = new MemoryStream(); 
      serializer.WriteObject(memoryStream, lobby); 

      // Return the results serialized as JSON 
      string json = Encoding.Default.GetString(memoryStream.ToArray()); 
      returnValue = json; 



     } 
     return returnValue; 
    } 

明らかに何かアドバイスや一般的な方向私がされているはずですが、私はほとんどの例やチュートリアルを行ってきたため、彼らは無駄にしたああ感謝。 これは非常に簡単なテストです。私は数字でGETを実行し、サービスは数値を読み込み、クラスのID変数に割り当て、次にそれを読み、シリアル化して返します。

+0

あなたは具体的にどのような問題が発生していますか?あなたはどのアーチファクトを "奇妙な"ものにしていますか? –

+0

申し訳ありません私はそれをより明確にするために投稿を修正します。可能であれば、 "xmlns =" http://schemas.microsoft.com/2003/10/Serialization/ "を使わずにストレートJSONを使用したいと思っています。読んでいただきありがとうございます:) – Rodney

+0

私は正直言って私の実装でそれを見たことはありませんしかし、あなたのWebGet定義にResponseFormat = WebMessageFormat.Jsonを追加したいかもしれません。 – RockyMountainHigh

答えて

1

あなたはそれを取り除くためにbodyStyle属性を設定する必要があります...

[WebGet(UriTemplate = "xxx/xx/{gameID}/{format}"), BodyStyle = WebMessageBodyStyle.Bare ] 
+0

返信ありがとうございますが、これは何の影響もないようですが、私は上記のRockyの記事でいくつかの成功を収めました。 – Rodney