簡體   English   中英

spray-json錯誤:無法找到參數um的隱含值

[英]spray-json error: could not find implicit value for parameter um

我有這個案例課

case class Person(val name: String)

object JsonImplicits extends DefaultJsonProtocol {
  implicit val impPerson = jsonFormat1(Person)
}

我正在嘗試使用spray-json來解析post請求:

  post {
    entity(as[Person]) { person =>
      complete(person)
    }
  }

但是當我嘗試編譯時,我得到了:

src / main / scala / com / example / ServiceActor.scala:61:錯誤:找不到參數um的隱式值:spray.httpx.unmarshalling.FromRequestUnmarshaller [com.example.Person]

我不明白發生了什么,我怎么能解決這個問題呢?

謝謝

Spray的'entity [E]'指令在其類型E的范圍內需要隱式編組器JsonImplicits對象為類型E創建json marshaller和unmarshaller。

您需要確保implicit val impPerson在范圍內,換句話說,將import JsonImplicits._放在路由定義之上。

package abc.json

import spray.json.DefaultJsonProtocol


object OrderJsonProtocol extends DefaultJsonProtocol {

  implicit val orderFormat = jsonFormat1(Order)
}


case class Order(orderNumber: String)

import akka.actor.Actor
import abc.json._
import spray.routing.HttpService

class OrderRestServiceActor extends Actor with HttpService {

  def actorRefFactory = context

  def receive = runRoute(route)



  val route = {
    import OrderJsonProtocol._
    import spray.httpx.SprayJsonSupport.sprayJsonUnmarshaller


    path("order") {
      post {
        println("inside the path")
        entity(as[Order]) { order =>
         complete(s"OrderNumber: ${order.orderNumber}")
        }

      }
    }

  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM