Odpowiedź @ AlaxDean nr 7, Argonaut jest jedyną, której udało mi się szybko rozpocząć pracę z sbt i intellij. Właściwie json4 również zajęło trochę czasu, ale radzenie sobie z surowym AST nie jest tym, czego chciałem. Dostałem argonautę do pracy, umieszczając jedną linię w moim build.st:
libraryDependencies += "io.argonaut" %% "argonaut" % "6.0.1"
A potem prosty test, aby sprawdzić, czy uda mi się uzyskać JSON:
package mytest
import scalaz._, Scalaz._
import argonaut._, Argonaut._
object Mytest extends App {
val requestJson =
"""
{
"userid": "1"
}
""".stripMargin
val updatedJson: Option[Json] = for {
parsed <- requestJson.parseOption
} yield ("name", jString("testuser")) ->: parsed
val obj = updatedJson.get.obj
printf("Updated user: %s\n", updatedJson.toString())
printf("obj : %s\n", obj.toString())
printf("userid: %s\n", obj.get.toMap("userid"))
}
I wtedy
$ sbt
> run
Updated user: Some({"userid":"1","name":"testuser"})
obj : Some(object[("userid","1"),("name","testuser")])
userid: "1"
Upewnij się, że znasz opcję Option, która jest po prostu wartością, która może być również zerowa (chyba zerowa bezpieczna). Argonaut używa Scalaz, więc jeśli zobaczysz coś, czego nie rozumiesz, jak symbol \/
(operację), prawdopodobnie jest to Scalaz.