JSON (String?) Значение печатается с кавычками ("") - PullRequest
1 голос
/ 09 февраля 2020
val json: JsValue = Json.parse(input)
println(json)

отпечатков:

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

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

отпечатков:

"подключить"

что я делаю не так, что он печатает "подключить" (с кавычками), а не подключить ?

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

также печатает:

"connect"

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

печатает:

неизвестная команда

1 Ответ

2 голосов
/ 09 февраля 2020

что я делаю не так, что он печатает "соединиться" (с кавычками), а не соединиться?

(json \ "command").get возвращает JsValue. Когда вы вызываете Json.stringify для объекта JsValue, он дает строковое представление объекта JsValue. Json.stringify не преобразует объект JsValue в строку тип . Использование Json.stringify не равнозначно преобразованию типов, это просто текстовое представление объекта JsValue.
Из playframework сделайте c , предпочтительный способ преобразования из JsValue в другой тип с помощью его метода проверки. Вам понадобится что-то вроде следующего:

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

println(command) // prints connect without quotes
...