Как преобразовать arry: string в конкретную модель в Scala - PullRequest
0 голосов
/ 15 октября 2018

Я хочу преобразовать array: String в Seq[Message] ...

Класс дела:

case class Message(name: String, sex: String)

Источник:

[
    { "name": "Bean",
      "sex": "F"
    },
    {
      "name": "John",
      "sex": "M"
    }
]

Пункт назначения

Seq[Person]

Как конвертировать ??код ... * * 1014

1 Ответ

0 голосов
/ 15 октября 2018

Вам нужно использовать какие-то декодеры / десериализаторы для декодирования строки в 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 в коллекцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...