J. Busk
J. Busk

Reputation: 17

How to construct a case class for this json input and convert it to an object?

I get this Json string from a web api:

{"results":{"Inne":"23.3","Ute":"5.8"}}

How do I construct a case class to match this output?


This is my attempt:

case class Results(Inne: String, Ute: String)

object MyJsonProtocol extends DefaultJsonProtocol {
  implicit val tempsFormat = jsonFormat2(Results)
}

I try to convert with val temps = jsonin.convertTo[Results] and obvious this does not work since it expects only two values.

Upvotes: 0

Views: 279

Answers (1)

Falmarri
Falmarri

Reputation: 48577

case class Results(Inne: String, Ute: String )
case class Result(results: Results)
object MyJsonProtocol extends DefaultJsonProtocol {
    implicit val tempsFormat = jsonFormat2(Results)
    implicit val resultsFormat = jsonFormat1(Results)
}

Or you can use lenses https://github.com/jrudolph/json-lenses

case class Results(Inne: String, Ute: String )
object MyJsonProtocol extends DefaultJsonProtocol {
    implicit val tempsFormat = jsonFormat2(Results)
    implicit val resultsFormat = jsonFormat1(Results)
}

jsonin.extract[Results]('results)

Upvotes: 1

Related Questions