0

我正在使用liftweb JSON转换器并让它工作,通过包含这样的依赖build.sbt

"net.liftweb" %% "lift-json" % "2.6.2"

在我添加枚举之前,这一切都有效。我可以看到这里支持枚举,你应该这样做:

// Scala enums
implicit val formats = net.liftweb.json.DefaultFormats + new EnumSerializer(MyEnum)

但问题是在我的环境net.liftweb.json.ext中无法识别包。这是EnumSerializer生活的包裹。

4

2 回答 2

3

您需要包含一个单独的扩展库。添加额外的行,例如:

"net.liftweb" %% "lift-json-ext" % "2.6.2"

应该做的伎俩。

于 2015-11-18T10:52:44.600 回答
0

我有一个由 gRPC 原型创建的枚举,在这种情况下,EnumSerializer 对我不起作用。在这种情况下,我创建了一个自定义序列化程序并且工作得很棒。

case object GrpcTimeUnitSerializer extends CustomSerializer[TimeUnit] (format => (
  {
    case JString(tu) => TimeUnit.fromName(tu.toUpperCase).get
    case JNull       => throw new GrpcServiceException(Status.INTERNAL.withDescription("Not allowed null value for the type TimeUnit."))
  },
  {
    case tu: TimeUnit => JString(tu.toString)
  }
))

这是DefaultFormats定义:

implicit val formats: Formats = DefaultFormats + GrpcTimeUnitSerializer
于 2021-09-24T16:13:37.377 回答