@ AlaxDeans Antwort Nr. 7, Argonaut ist die einzige, bei der ich schnell mit sbt und Intellij arbeiten konnte. Eigentlich hat json4s auch wenig Zeit in Anspruch genommen, aber der Umgang mit einem rohen AST ist nicht das, was ich wollte. Ich habe Argonaut zum Arbeiten gebracht, indem ich eine einzelne Zeile in meine build.st eingefügt habe:
libraryDependencies += "io.argonaut" %% "argonaut" % "6.0.1"
Und dann ein einfacher Test, um zu sehen, ob ich JSON bekommen könnte:
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"))
}
Und dann
$ sbt
> run
Updated user: Some({"userid":"1","name":"testuser"})
obj : Some(object[("userid","1"),("name","testuser")])
userid: "1"
Stellen Sie sicher, dass Sie mit Option vertraut sind. Dies ist nur ein Wert, der auch null sein kann (null sicher, denke ich). Argonaut verwendet Scalaz. Wenn Sie also etwas sehen, das Sie nicht verstehen, wie das Symbol \/
(eine oder eine Operation), ist es wahrscheinlich Scalaz.