我想知道是否有任何方法可以在喷射路由中将 Java 对象作为 Json 字符串返回。
现在,我正在通过我创建的 util 类(JacksonUtil)使用 Jackson 将我的 Java 对象(返回我的 UserActor)转换为 Json。
这是供参考的代码片段:
val route = {
path("users" / Segment) { id =>
parameterMap { params =>
get {
respondWithMediaType(MediaTypes.`text/plain`) {
val resource: GetResource = new GetResource
resource.searchCriteriaList.add(new SearchCriteria("userId", "=", Segment))
logger.info("Request Received in new route: " + resource)
onComplete(callUserActor(resource)) {
case Success(ret: User) => {
logger.info("Request complete. Success.")
complete(JacksonUtil.toJson(ret))
}
case Failure(error) => {
logger.info("Request complete. Failure. " + error)
complete("Error: " + error)
}
}
}
}
}
}
}
def callUserActor(getResource: GetResource): Future[User] = {
(userActor ? getResource).mapTo[User]
}
GetResource 是获取查询参数的类。例如,如果客户端点击 GET /users/123,则 GetResource 将添加一个 searchcriteria 作为 userId = "123"