没有调用Newtonsoft WriteJson(),但ReadJson()是

时间:2017-10-09 21:27:27

标签: c# json.net

请注意:我看过Why JsonConverter.WriteJson() never gets called, although JsonConverter.ReadJson() does get called?,但回答不尽如人意。

我有一个JsonConverter。调用ReadJson并且效果很好,但从不调用WriteJson。然而,序列化发生得很好。虽然这在短期内很棒,但我担心某些情况最终会调用我的WriteJson,而且会有些东西爆炸。

我正在使用JsonConvert.Deserialize和一个新的JsonSerializerSettings对象,我提供了一个转换器列表。有3个转换器。在前两个中,WriteJson和ReadJson的调用完全符合我的预期(它们反序列化小数和整数,因此我可以处理逗号和货币符号)。第三个,序列化一个类型的枚举(基于一个int),只是不调用WriteJson,但json写得很好(事实上,正如我想要的那样)。

我已经覆盖了CanWrite以返回true,但我认为这不是问题。

如何强制我的JsonConverter使用MY WriteJson方法?

谢谢!

1 个答案:

答案 0 :(得分:2)

没关系。重新阅读我自己的问题并弄清楚了。我在调用Deserialize并在新的设置对象中传入格式化程序时,我只使用自定义格式化程序,因此不会调用WriteJson()。

在属性的Attribute中使用formatter会正确调用方法。