2009-06-08 10 views
7

JSONを返すWCFでWebサービスを作成していますが、DataContractJsonSerializerはいくつかの循環参照(この特定のケースでは削除できません)を嫌っています。WCFカスタムシリアライザ

代わりに、私はNewtonsoft jsonライブラリを使用したいと思います。 WCFでカスタムシリアライザを作成する最も簡単な方法は何ですか?

注:ストリームを返すことができることはわかっていますが、シリアルコードの操作コードに操作コードを認識させたくありません。

答えて

4

純粋 WCF:あなたは、カスタム・シリアライザを適用し、(「フル」.NET上の)ワイヤーの両端をコントロールしている場合は比較的簡単です - あなたはDataContractSerializerOperationBehaviorから継承された動作を追加し、CreateSerializerを上書き - hereを参照してください(属性がhereの場合)。

ただし、 (テストされていない)を理解すると、JSON対応WCFサービスはこのルートを使用せず、独自のシリアライザを直接適用します。

+0

ネストされたオブジェクトの多くを飾るためにしたくない何かを実装するために楽しみにしていますが、私のjsonはxmlルートノードにラップされています。 {"Id":0、 "IsFinalized":false、 "IsTemplate":false} rogueg

+0

リンクが壊れているようです。 – Adrian773

2

設定IsReference trueにのDataContractの属性は、詳細については、.NET 3.5SP1

[DataContract(IsReference = true)] 
public class Employee 

参照して使用可能です。あなたができる MSDN DataContractAttribute.IsReference

+0

壊れたリンク –

+2

の壊れたリンクを修正 – Morbia

関連する問題