Ответ @AlaxDean №7, Argonaut - единственный, кого я смог быстро заставить работать с sbt и intellij. На самом деле json4s тоже занимал мало времени, но я не хотел иметь дело с необработанным AST. Я заставил argonaut работать, вставив одну строку в свой build.st:
libraryDependencies += "io.argonaut" %% "argonaut" % "6.0.1"
А затем простой тест, чтобы узнать, могу ли я получить 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"))
}
А потом
$ sbt
> run
Updated user: Some({"userid":"1","name":"testuser"})
obj : Some(object[("userid","1"),("name","testuser")])
userid: "1"
Убедитесь, что вы знакомы с Option, который представляет собой просто значение, которое также может быть нулевым (я полагаю, нулевым). Argonaut использует Scalaz, поэтому, если вы видите что-то, чего не понимаете, например символ \/
(или операцию), это, вероятно, Scalaz.