Экранирующие символы в динамическом списке

Я хотел бы экранировать символы в динамическом списке, используемом при создании класса case.

case class Profile(biography: String,
                  userid: String,
                  creationdate: String) extends Serializable

object Profile {

  val cs = this.getClass.getConstructors
  def createFromList(params: List[Any]) = params match {
    case List(biography: Any,
              userid: Any,
              creationdate: Any) => Profile(StringEscapeUtils.escapeJava(biography.asInstanceOf[String]),
                                            StringEscapeUtils.escapeJava(creationdate.asInstanceOf[String]),
                                            StringEscapeUtils.escapeJava(userid.asInstanceOf[String]))
  }
}

JSON.parseFull("""{"biography":"An avid learner","userid":"165774c2-a0e7-4a24-8f79-0f52bf3e2cda", "creationdate":"2015-07-13T07:48:47.924Z"}""")
  .map(_.get.asInstanceOf[scala.collection.immutable.Map[String, Any]])
  .map { 
    m => Profile.createFromList(m.values.to[collection.immutable.List])
   } saveToCassandra("testks", "profiles", SomeColumns("biography", "userid", "creationdate"))

Я получаю эту ошибку:

scala.MatchError: List(An avid learner, 165774c2-a0e7-4a24-8f79-0f52bf3e2cda, 2015-07-13T07:48:47.925Z) (of class scala.collection.immutable.$colon$colon)

Любые идеи, пожалуйста?


person drecute    schedule 03.09.2015    source источник
comment
Попробуйте .toList вместо .to[collection.immutable.List]   -  person Shadowlands    schedule 03.09.2015
comment
Спасибо, но та же ошибка.   -  person drecute    schedule 03.09.2015


Ответы (1)


Возможно, было бы проще использовать другую (внешнюю) библиотеку JSON, чем scala.util.parsing.json (которая устарела, начиная с Scala 2.11).

Существует много хороших библиотек Scala Json, ниже пример с использованием json4s.

import org.json4s._
import org.json4s.native.JsonMethods._

case class Profile(biography: String, userid: String, creationdate: String)

val json = """{
|  "biography":"An avid learner",
|  "userid":"165774c2-a0e7-4a24-8f79-0f52bf3e2cda", 
|  "creationdate":"2015-07-13T07:48:47.924Z"
|}""".stripMargin

parse(json).extract[Profile]
// Profile(An avid learner,165774c2-a0e7-4a24-8f79-0f52bf3e2cda,2015-07-13T07:48:47.924Z)
person Peter Neyens    schedule 03.09.2015