1

スプレー ルーティング内で Java オブジェクトを Json String として返す方法があるかどうかを知りたいです。

今のところ、作成したユーティリティ クラス (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 は検索基準を userId = "123" として追加します。

4

2 に答える 2