我使用json4s库将scala case类转换为json消息。我的case类是依赖于第三方的Java枚举类型:将java枚举转换为scala枚举json4s序列化
//third party java code
public enum Fruit {
Banana (1),
Cherry (2);
}
我的Scala类,然后使用此枚举作为一个参数:
case class Order(fruit : Fruit, quantity : Int)
我想use EnumNameSerializer
由`org.json4s提供.EXT”库:
import org.json4s._
import org.json4s.native.Serialization
import org.json4s.native.Serialization.{write, read}
import org.json4s.ext.EnumNameSerializer
case class Order(fruit : Fruit, quantity : Int) {
implicit lazy val formats =
DefaultFormats + new EnumNameSerializer(fruit)
}
但是,我得到一个编译时错误:
error: inferred type arguments [Fruit] do not conform to class EnumNameSerializer's type parameter bounds [E <: Enumeration]
如何将java枚举转换为一个scala Enumeration for json4s的EnumNameSerializer?
我希望避免编写一个custom serializer,因为我的实际用例涉及我的case类中使用的许多不同的java枚举类型,因此我将不得不编写许多不同的自定义序列化器。
预先感谢您的关怀和响应。
为什么不为您的枚举编写自定义序列化程序?你只写一次 –
@TrustNoOne正如我在问题中写的那样,这些是第三方枚举,并且有很多。 –
对不起,你写了“许多不同的枚举值”,我认为你只有一个枚举值很多 –