我是斯卡拉和喷雾的新手,我有一个非常简单的问题。当我从休息呼叫中返回一个字符串时,我希望我的休息服务返回未转义的字符串,而不是在其中获得带有转义的压缩字符串。这是我的代码:
休息服务: ....
get {
respondWithMediaType(MediaTypes.`text/plain`) {
complete {
s"""
hey joe this is
"me"
bill"""
}
}
}
当我拨打我的服务时,我得到了:
"\nhey joe this is\n\"me\"\n\bill"
但如果我做了println(),我会看到我的期望。请帮忙。
答案 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
))
}
}