десериализатор json с поддержкой параметризованных классов Case - PullRequest
0 голосов
/ 11 сентября 2018

Только что обнаружил, что 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, который фактически работает с параметризованными классами Case?

1 Ответ

0 голосов
/ 11 сентября 2018

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)

output

X(Some(Z(test)))
...