Прочитать значение JSON из request.body в Scala & Play Framework

0

Я отправляю данные JSON из моей угловой формы в контроллер Play Framework. Контроллер получает сообщения, и когда я его печатаю консоль, он выглядит следующим образом:

{"username":"{   \"tID\": 123,   \"cID\": \"TEST\",   \"version\": 1}"}

Что я делаю до сих пор: [Примечание: я использую play.api.libs.json ]

def sendMessage = Action(parse.json) {
  request =>
  val message: JsValue = request.body
  val cID = (message \ "cID").get
}

Однако я получаю сообщение об ошибке java.util.NoSuchElementException: None.get потому что он не может получить идентификатор cID из строки JSON? Как получить значение для cID без escape-символа \

Теги:
playframework

1 ответ

1
Лучший ответ

значение "username" кодируется Json String, потому что вы должны декодировать Json String

Попробуй это.

def sendMessage = Action(parse.json) { request =>
  val message: JsValue = request.body
  val userNameJsonStr = (message \ "username").as[String]
  val value = Json.parse(userNameJsonStr)
  val cID = (value \ "cID")
}
  • 0
    Я попробовал это, и я думаю, что Json.parse ожидает String, тогда как userNameJsonStr уже является JsValue. IDE жалуется, говоря, что Cannot resolve reference parse with such signature
  • 1
    @summerNight Извините, рекомендую Исправлено
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню