14

[Serializable] とマークされたクラスがあります。Web API から返すと、フィールド名はすべてファンキーです。

通常、返される JSON は

[{"OrderId":797 ...

[Serializable] を使用した場合に返される JSON

[{"<OrderId>k__BackingField":797 ...

キャッシュに BinaryFormatter を使用するためにシリアライズ可能とマークしたくありません。カスタム・シリアライザーを作成するか、シリアライズできないツイン・クラスを作成して、両者の間で「キャスト」するモンキー・コードを作成する以外に方法はありますか?

4

1 に答える 1

26

Json.NET に [Serializable] セマンティクスを再度無視させるには、次のワンライナーが必要です。

((DefaultContractResolver)config.Formatters.JsonFormatter.SerializerSettings.ContractResolver).IgnoreSerializableAttribute = true;

[Serializable] を完全に削除し、BinaryFormatter の使用を停止し、代わりに別のシリアライザーを使用して、たとえば Json.NET シリアライザーなど、必要なキャッシュを実行することをお勧めします。

于 2012-11-07T20:57:50.503 に答える