2012-03-12 15 views
0

現在開発中のWCF REST APIを、新しいASP.NET MVC 4 Web APIを使用するように変換することを検討しています。 WCFについて私が気に入っていることの1つは、データ契約に[DataMember(EmitDefaultValue = false)]属性を追加して、設定されていない特定の値がJSON/XMLオブジェクトにシリアル化されないようにすることです。既定値を省略しますASP.NET MVC 4 Web API

新しいASP.NET MVC 4 Web APIには、この機能と同等の機能がありますか?私はこれに関する何かを見つけることができないようです。

答えて

0

シリアル化のメカニズムによっては、ASP.NET Web APIは別のシリアライザを使用します。現在、JSONのベータ版ではJavaScriptSerializerを使用し、XMLの場合にはXmlSerializerを使用します。しかし、XmlMediaTypeFormatterにはUseDataContractSerializerというプロパティがあり、WCF(DataContractFormatter)と同じXMLシリアライザを使用できます。

カスタムメディアタイプフォーマッタを記述しない限り、2つのシリアライザを同じように動作させるために、モデルにいくつかの属性を付けるだけで独自の方法があるとは思いません。したがって、XML/JSON用のカスタムフォーマッタを作成し、使用されているシリアライザをWCFで使用されているものにスワップすることも可能です。

ここでは、JSON.NetをJSONに使用するフォーマッタのan exampleです。 EmitDefaultValueプロパティを考慮に入れて、DataContractJsonSerializerを使用するように調整することができます。

+0

私たちは、あなたが示唆したように、アプリの起動時に設定してロードされるカスタムフォーマッタでJSON.Netシリアライザを使用して終了。次に、プロパティをDefaultValueAttributeで修飾し、シリアライザ設定にデフォルト値を無視するように指示します。 – phreak3eb

関連する問題