2011-07-22 34 views
10

WCFのデフォルトのJSONシリアル化(現在はwebHttpの動作をテスト中)を置き換えて、application/jsonをMIMEタイプとして渡すことはできますか?WCFのデフォルトのJSONシリアル化を置き換えます

{"Key":"PropertyName", "Value":"PropertyValue"} 

は私だけ(jQueryの+ WCFでデータを要求する)JSON対応エンドポイントのサービスを使用しています:特に、私は、すべてのプロパティは、キー/値のペアのようなものですデフォルトではそれが好きではありません。

+0

これが役立つかどうかを確認してください。http://stackoverflow.com/questions/8372076/post-json-dictionary-without-key-value-text/38440427#38440427 –

答えて

11

メッセージフォーマッタを使用して、JSONの処理に使用するシリアライザを変更できます。 http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspxのポストは、デフォルトのシリアライザ(DataContractJsonSerializer)を別のもの(JSON.NET)に変更する方法の例を示しています。

+0

ありがとうCarlos。それは簡単ではありませんでしたが、私は最終的にそれを働かせました。(私はcontentTypeMapperを忘れました:))) – jaraics

+0

Brilliant blog post。 NewtonSoftのバリエーションを使用しても、jsonとXMLの両方のフォーマットをサポートすることが非常に簡単になりました。 :) –

-1

JSONオブジェクト構造に対応するクラスを作成することを検討してください。これは、シリアル化され得る

[DataContract] 
public class Customer 
{ 
    [DataMember(Name="name")] 
    public string Name{get;set;} 

    [DataMember(Name="id")] 
    public int ID{get;set;} 
} 

:その場合は次のようなDictionary<>を使用する必要はありません

もちろん
{"name": "name-value", "id": "id-value"} 

、これはあなたがすでに持っているものにだけ代替され、適用されない場合があります。

関連する問題