我正在尝试序列化GeneralResponse:

case class GeneralResponse[T](succeeded: Boolean, payload: Option[T])

有效载荷是GroupsForUserResult:
case class GroupsForUserResult(groups: Seq[UUID]).

我正在使用mapper.readValue(response.body, classOf[GeneralResponse[GroupsForUserResult]]),但不幸的是,有效负载已序列化为Map而不是所需的case类(GroupForUserResult)。

最佳答案

由于Java清除-Jackson在运行时无法从行中得知通用类型T-

mapper.readValue(response.body, classOf[GeneralResponse[GroupsForUserResult]])

解决这个问题的方法是
import com.fasterxml.jackson.core.`type`.TypeReference

mapper.readValue(json, new TypeReference[GeneralResponse[GroupsForUserResult]] {})

这样,您就可以提供TypeReference实例以及所有所需的Type信息。

09-30 14:05