Вам нужно использовать какие-то декодеры / десериализаторы для декодирования строки в case class
.В Scala есть тонны декодеров.Один из моих любимых - circe , так как он функционален и очень хорошо работает со скалайдами.
import io.circe._, io.circe.generic.auto._, io.circe.parser._, io.circe.syntax._
case class Message(name: String, sex: String)
val encoded =
"""
|[
| { "name": "Bean",
| "sex": "F"
| },
| {
| "name": "John",
| "sex": "M"
| }
|]
""".stripMargin
val decoded: Either[Error, List[Message]] = decode[List[Message]](encoded)
decoded match {
case Right(e) => println("success: " + e)
case Left(l) => println("failure: "+ l)
}
вывод:
success: List(Message(Bean,F), Message(John,M))
Если вы ищете простой простой код, совместимый с Java, взгляните на https://github.com/FasterXML/jackson-module-scala
Также смотрите: Scala десериализует JSON в коллекцию