2016-05-04 7 views
0

web.config内に、Webアプリケーションでシリアル化できるモデルメンバー(Entity Frameworkによって生成された)の名前を記述する文字列のリストがあります。 。
どうすればいいですか?実行時に[IgnoreDataMember]属性を設定しますか?
考えられるのは、すべてのデータを公開する必要はなく、公開する設定を再コンパイルせずに構成できることです。
これまでは、リストに含まれていないメンバーのすべての値をnullに設定しています。しかし、この解決策は最適ではない。 datetimeのメンバは"0001-01-01T00:00:00"にシリアル化されています。さらに、レスポンスには多くの不要な情報が含まれています(レスポンスは最大150MBまで拡大できます)。したがって、単純にメンバーをシリアライズプロセスから削除する方が良いでしょう。ランタイム中にJSON/XMLシリアル化からデータメンバーを除外する方法

答えて

0

あなたは、属性を使用することができます:XMLやJSONのため[JsonIgnore]ため

[XmlIgnore]を。例えば

[XmlIgnore] 
public string MyString { get; set; } 

または

[JsonIgnore] 
public string MyString { get; set; } 

は、この情報がお役に立てば幸いです。

+0

また、それぞれSystem.Xml.SerializationまたはNewtonsoft.Jsonを使用することを忘れないでください。 –

+0

'[IgnoreDataMember]'は両方で動作します。私はそれを知っています。しかし、これは設定に応じて実行時に設定する必要があります... – Chris

+0

私は参照してください。実行時に条件を使用できる独自のJSONコンバータを作成することができます。助けてくれる別の投稿:[ここ](http://stackoverflow.com/questions/27397494/web-api-conditional-serialization-of-properties-at-runtime) –

0

[DataMember(EmitDefaultValue = false)]で回避しました。したがって、nullに設定されているすべてのプロパティはレスポンスに含まれません。しかし、これは最善の解決策ではありません。なぜなら、私はヌル値を送ることができないし、スワッガーも完全なモデルを示すからです。

関連する問題