JSON (String?) 值用引号 (" ") 打印

JSON (String?) value prints with quotes (" ")

val json: JsValue = Json.parse(input)
println(json)

打印:

{"id":1,"command":"connect"}

val command = Json.stringify((json \ "command").get)
println(command)

打印:

"connect"

我做错了什么,它打印 "connect"(带引号),而不是 connect?

val command = (json \ "command").get.toString
println(command)

还打印:

"connect"

command match {
case "connect" =>
    println("connected")
case _ =>
    println("unknown command")

打印:

unknown command

what am I doing wrong that it prints "connect" (with quotes), rather than connect?

(json \ "command").get returns JsValue。当您在 JsValue 对象上调用 Json.stringify 时,它会给出 JsValue 对象的字符串表示形式。 Json.stringify 不会将 JsValue 对象转换为 String type。使用 Json.stringify 并不等同于类型转换,它只是 JsValue 对象的文本表示。
playframework doc 开始,从 JsValue 转换为另一种类型的首选方法是使用其验证方法。您将需要如下内容:

val command = (json \ "command").validate[String].getOrElse("unknown command")

println(command) // prints connect without quotes