2016-11-30 22 views
1

Я хотел бы знать, есть ли способ вернуть объект Java как Json String внутри маршрутизации распыления.Как преобразовать объект Java в Json в маршрутизацию распыления

На данный момент я конвертирую свой объект Java (который возвращает мой UserActor) в Json, используя Jackson через созданный мной класс util (JacksonUtil).

Вот фрагмент кода для справки:

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/пользователи/123, то GetResource добавит searchcriteria в USERID = «123»

ответ

0

Я думаю, что вам нужно сделать это самостоятельно, как с помощью Джексон или с использованием LiftJson согласно ваших потребностей и простоты использования. Спрей не предоставляет такую ​​функцию по умолчанию, поскольку у нее нет зависимостей для этого!

Вы можете видеть зависимости компиляции, используемые спрея здесь: https://mvnrepository.com/artifact/io.spray/spray-routing_2.11/1.3.4

Скриншот:

0

Это должно работать для вас, так просто, как:

class YourService(implicit val requestTimeout: Timeout) 
extends HttpServiceActor with 
    Json4sJacksonSupport { 

    path("users"/Segment) { id => 
    parameterMap { params => 
     get { 
     respondWithMediaType(MediaTypes.`text/plain`) { 
      val user : Future[User] = Future { User("name", "90") } 
      complete(user) 
      } 
     } 
     } 
    } 
    } 

    implicit def json4sJacksonFormats: Formats = DefaultFormats.lossless 
}