scala-spray: почему я получаю экранированные строки с завершающими кавычками?

Я новичок в scala и spray, и у меня очень простая проблема. Я хочу, чтобы моя служба отдыха возвращала неэкранированные строки, когда я возвращаю строку из вызова паузы, вместо этого я получаю сжатую строку с экранами в ней. Вот мой код:

Служба отдыха: ....

get {
     respondWithMediaType(MediaTypes.`text/plain`) {
        complete {
                    s"""
hey joe this is 
"me" 
bill"""
          }
      }
   }

Когда я звоню в мою службу, я получаю:

"\nhey joe this is\n\"me\"\n\bill"

Но если я выполню println(), я увижу то, что и ожидал. Пожалуйста помоги.


person check_writer    schedule 27.03.2014    source источник
comment
Вам не нужно respondWithMediaType. Кроме того, это работает для меня, как задумано. Как вы тестировали?   -  person jrudolph    schedule 28.03.2014
comment
Я протестировал вызов службы с помощью CURL и обычного веб-браузера, и он возвращает все \t и \n в строке с завершающими кавычками. Я пытаюсь использовать результаты не в программе, поэтому наличие этих экранированных символов делает ее непригодной для использования.   -  person check_writer    schedule 28.03.2014


Ответы (2)


Я решил свою проблему, это была черта поддержки JSON, которая автоматически упорядочивала объект.

Эта черта Json4sSupport автоматически маршалирует ваши объекты как JSON, следовательно, обертка, компактная печать и т. д.

import spray.httpx.Json4sSupport

Если вы удалите его, вы должны получить неэкранированные результаты.

надеюсь, что это поможет кому-то еще.

person check_writer    schedule 28.03.2014
comment
А, круто ты придумал. Возможно, нам следует даже считать это ошибкой, потому что простая строка json не является допустимым документом json. - person jrudolph; 28.03.2014

У нас была та же проблема с Джексоном; мы обошли эту проблему, создав вместо этого объект ответа http, вот так…

              respondWithMediaType(`text/html`) {
                complete {
                  new HttpResponse(StatusCodes.OK, HttpEntity(
                    """
                    |<!DOCTYPE html>
                    |<html>
                    |<head>
                    |<title>Download app</title>
                    |</head>
                    |<body>
                    |<h2>
                    |Click <a href="/download/test.txt">here</a><br>
                    |</h2>
                    |</body>
                    |</html>
                  """.stripMargin
                  ))
                }
              }
person kadr68    schedule 22.07.2014