@ Відповідь AlaxDean №7, Argonaut - це єдиний, з ким я зміг швидко працювати з sbt та intellij. Насправді json4s також зайняв мало часу, але мати справу з сирим AST - це не те, чого я хотів. Я змусив аргонавта працювати, ввівши єдиний рядок у свій 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"
Переконайтеся, що ви знайомі з Варіантом, який є лише значенням, яке також може бути нульовим (я думаю, нульовий). Argonaut використовує Scalaz, тому якщо ви бачите щось, чого не розумієте, як символ \/
(або операцію), це, ймовірно, Scalaz.