2017-10-09 9 views
0

です。注意:私はWhy JsonConverter.WriteJson() never gets called, although JsonConverter.ReadJson() does get called?を読んでいますが、それは不満足な答えでした。Newtonsoft WriteJson()は呼び出されていませんが、ReadJson()は

私はJsonConverterを持っています。 ReadJsonが呼び出され、うまく動作しますが、WriteJsonは決して呼び出されません。それにもかかわらず、シリアル化はうまくいきます。これは短期間では素晴らしいことですが、最終的にはいくつかの状況が私のWriteJsonに電話して何かが爆発する恐れがあります。

私は新しいJsonSerializerSettingsオブジェクトでJsonConvert.Deserializeを使用していますが、これにコンバーターのリストを提供しています。 3つのコンバータがあります。最初の2つでは、WriteJsonとReadJsonは、私が期待しているとおりに正確に呼び出されます(小数点と整数を逆シリアル化するので、カンマと通貨記号を処理できます)。列挙型(intに基づく)の型をシリアライズする3番目のメソッドはWriteJsonを呼び出さないだけですが、jsonはちょうど良い結果を出します。

CanWriteをtrueに戻すようにオーバーライドしましたが、それは問題ではないと思います。

JsonConverterにMY WriteJsonメソッドを使用させるにはどうすればよいですか?

ありがとうございます!

+3

あなたのコードを記述したり、あなたの質問を編集したり、あなたが使っている実際のコードと、コピーされずに貼り付けられ、書かれていないことを示す私たち自身が実行できる小さな実行可能なメイン関数を含めないでください。 –

答えて

1

Nevermind。私自身の質問を再読し、それを理解した。 Deserializeを呼び出して新しい設定オブジェクトでフォーマッタを渡すときには私のカスタムフォーマッタしか使用しないので、WriteJson()は呼び出されません。

プロパティの属性にフォーマッタを使用すると、メソッドが正しく呼び出されます。

関連する問題