【问题标题】:Newtonsoft WriteJson() is not being called, but ReadJson() is没有调用 Newtonsoft WriteJson(),但 ReadJson() 是
【发布时间】:2023-03-23 12:39:01
【问题描述】:

请注意:我阅读了Why JsonConverter.WriteJson() never gets called, although JsonConverter.ReadJson() does get called?,但答案并不令人满意。

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

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

我已重写 CanWrite 以返回 true,但我认为这不是问题。

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

谢谢!

【问题讨论】:

  • 不要描述你的代码,编辑你的问题并包含你正在使用的实际代码和一个小的可运行的 Main 函数,我们可以复制和粘贴并运行我们自己,以证明没有调用写入。

标签: c# json.net


【解决方案1】:

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

在属性的 Attribute 中使用格式化程序可以正确调用方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    相关资源
    最近更新 更多