强制JSON4S使用自定义序列化器而不是默认案例类序列化

时间:2019-12-12 09:00:26

标签: json4s

我当前正在使用一个库,该库包含一堆表示物理值(例如功率,电压,频率等)的案例类。这些类本质上是Double +一个单位(例如123.45瓦)。这些案例类具有默认的构造函数,该构造函数采用Double,然后采用最常用的单位-瓦特表示功率,赫兹表示频率,等等。

现在,我正在与一个外部API集成,该API公开这些值,但是选择以其他单位(例如,用mHz代替Hz表示频率)来表达它们。

所以我写了一堆CustomSerializer,它们使用正确的单位进行反序列化。

我不知道是否有可能让JSON4S实际使用它们-因为它总是更喜欢使用默认的case类构造函数,这意味着我用错误的单位得到了值。

到目前为止,我发现的唯一解决方法是使用transformField并将值相除/相乘,以将其以默认构造函数的正确单位显示,但这不是很优雅或直观。

是否有办法使JSON4S优先于自定义序列化程序,或为某些字段显式配置一个(类似于杰克逊的@JsonSerialize@JsonDeserialize注释)?

0 个答案:

没有答案