支持参数化案例类的json解串器

时间:2018-09-11 14:00:15

标签: json scala deserialization lift json-deserialization

刚刚遇到liftweb.json不适用于参数化案例类。 在运行时以下失败:

case class ResponseOrError[R](status: String, responseData: Option[R], exception: Option[Error]) {
}

val answer = json.extract[ResponseOrError[Response]]

具有:

do not know how to get type parameter from R

是否存在实际上可与参数化案例类一起使用的JSON解串器?

1 个答案:

答案 0 :(得分:0)

json4s以您期望的方式工作。这是一个示例:

import org.json4s.{DefaultFormats, Formats}
import org.json4s.jackson.JsonMethods.parse

case class Z(str: String)
case class X[R](z: Option[R])

val json =
  """
    |{
    |    "z": {
    |        "str" : "test"
    |    }
    |}
  """.stripMargin

implicit val formats: Formats = DefaultFormats.withStrictArrayExtraction

val result = parse(json).extract[X[Z]]
println(result)

输出

X(Some(Z(test)))