scala-spray:为什么我会使用尾随引号来转义字符串?

时间:2014-03-27 17:47:13

标签: spray spray-json

我是斯卡拉和喷雾的新手,我有一个非常简单的问题。当我从休息呼叫中返回一个字符串时,我希望我的休息服务返回未转义的字符串,而不是在其中获得带有转义的压缩字符串。这是我的代码:

休息服务: ....

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

当我拨打我的服务时,我得到了:

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

但如果我做了println(),我会看到我的期望。请帮忙。

2 个答案:

答案 0 :(得分:4)

我解决了自己的问题,它是自动编组对象的JSON支持特征

此特性 Json4sSupport 自动将您的对象编组为JSON,因此包装和压缩打印等。

import spray.httpx.Json4sSupport

如果你删除它,你应该得到未转义的结果。

希望它可以帮助其他人。

答案 1 :(得分:3)

我们使用杰克逊遇到同样的问题;我们通过创建一个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
                  ))
                }
              }