1. ホーム
  2. c#

[解決済み] Newtonsoftは属性を無視する?重複

2023-07-21 12:42:38

質問

私は現在、私はASP MVCのコントローラを介してJSONを返すつもりですLoveSeatを介して、CouchDBからデータを引き出すために、同じC#のDTOを使用しています。

私はコントローラを通じてそれらを下に送信する前に私のDTOをセラライズするためにNewtonSoftライブラリを使用しています。

しかし、CouchDBもNewtonSoftを使用しているように、それはまた、次のようなプロパティレベルのNewtonSoft属性を尊重しています。

<プレ [JsonIgnore] [JsonProperty("foo")] これらの属性を無視するようにnewtonsoftライブラリに明示的に指示する方法はありますか?ラブシートでは、IObjectSerializerの独自の実装を提供することができ、netwonsoftのJsonSerializerSettingsを完全に制御することができます。そのため、これらの設定を使用して、属性を無視することができますか?

私がこの時点で見ることができる唯一の代替案は、私の DTO を複製することであるため、質問します。それはひどいことではありませんが、素晴らしいことでもありません。

私が見ることができる唯一の他の方法は、異なるアセンブリ名などで、私のプロジェクトにNewtonsoft.Jsonソースの私自身のバージョンを持ち込むことです。しかし、この方法は間違いなく狂気の沙汰であり、この道を行く前に DTO を複製します。

どのように解決するのですか?

結局、属性を追加するだけで必要なプロパティはすべてvirtualにして、別のクラスで単独で、関連するnewtonsoftの属性をオーバーライドすることにしました。

これは、私はあまり重複することなく、CouchDBからデシリアライズとGETのためにシリアライズするときに、異なるシリアライズの動作を持つことができます。それは2つが結合されていることを、罰金、およびボーナスです;私はとにかくしたいベース内の任意の変更。

それはまだ私の最初の質問が可能であるかどうかを知ることは素晴らしいことでしょうか?