2017-03-08 10 views
0

JSON i/pをケースクラスCacheRequestにマップしようとしています。
リクエストはPOSTです。
私はScalaとAkkaを初めて使用しています。
json4sを使用してPOSTリクエストでJSONデータを処理する

import org.json4s.{DefaultFormats, Formats} 
implicit val formats: Formats = DefaultFormats 
val route: Route = traceContextAwareRoute { 
      pathPrefix(system.name) { 
       post { 
       path("sample") { 
        entity(as[CacheRequest]) { x => { 
        val cacheRequest: CacheRequest = CacheRequest(x.a, x.b, x.c, x.d, x.e, x.f) 

        onComplete(getSystemStock(cacheRequest)) { 
         (response: Try[Option[CacheResponse]]) => complete(processResponse(response)) 
        } 
        } 

        } 
       } 
       } 
      } 


私の場合クラスは、このようなものです。

case class CacheRequest(a: String, 
         b: String, 
         c: Int, 
         d: Int, 
         e: Int, 
         f: Int) 

could not find implicit value for parameter um: akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller[mcc.movie.common.model.CacheRequest] 

not enough arguments for method as: (implicit um: akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller[mcc.movie.common.model.CacheRequest])akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller[mcc.movie.common.model.CacheRequest] 

I'supposedのようなエラーを取得するには、json4sを使ってこれを実行します。
これに関するお手伝いは私にとっては大丈夫です。

答えて

0

あなたは、このLIBを使用することができます。https://github.com/hseeberger/akka-http-json

コードは、私はその依存関係 "de.heikoseeberger" %% "アッカ-HTTP-キルケ" % "1.12.0" をこの

import org.json4s.{DefaultFormats, Formats, jackson} 
import de.heikoseeberger.akkahttpjson4s.Json4sSupport 

class Route { 
    import Json4sSupport._ 
    implicit val formats: Formats = DefaultFormats 
    implicit val serialization = jackson.Serialization 

    val route: Route = traceContextAwareRoute { 
    pathPrefix(system.name) { 
     post { 
     path("sample") { 
      entity(as[CacheRequest]) { x => { 
      val cacheRequest: CacheRequest = CacheRequest(x.a, x.b, x.c, x.d, x.e, x.f) 

      onComplete(getSystemStock(cacheRequest)) { 
       (response: Try[Option[CacheResponse]]) => complete(processResponse(response)) 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

のようなものを追加します。しかし、インポート中に> de.heikoseeberger.akkahttpjson4s.Json4sSupportをインポートすると、 "akkahttpjson4sを解決できません"というメッセージが表示されます。 –

+0

これを加える: "de.heikoseeberger" %% "akka-http-json4s"% "1.12.0"、 –

+0

うん、それは働いた。ありがとうございました。 –

関連する問題