Srini K
Srini K

Reputation: 3365

How to apply toJson to instance of a case class using spray-json library

Registration.scala

package model

import akka.actor.Actor
import spray.json._
import DefaultJsonProtocol._

case class Registration(
  system: String, 
  identity: String)

object RegistrationProtocol extends DefaultJsonProtocol {
  implicit val adsRegistrationFormat = jsonFormat2(Registration)
}

RegistrationService.scala

import akka.actor.{Props, ActorLogging, Actor}
import model.Registration

object RegistrationsService {
  case class PostRegistrationMessage(registration: Registration)

  def props(property: String) = Props(classOf[RegistrationsService], property)
}

class RegistrationsService(property: String) extends Actor with ActorLogging {
  import RegistrationsService._

  def receive = {
    case PostRegistrationMessage(registration) => {
      import model.RegistrationProtocol._

      val json = registration.toJson

    }
  }
}

Can anyone help me understand why this is failing with compilation error "value toJson is not a member of model.Registration" and how to fix it. It if failing in the last line of the code above, which is "val json = registration.toJson"

Upvotes: 3

Views: 1746

Answers (1)

Eugene Zhulenev
Eugene Zhulenev

Reputation: 9734

You need to import implicit operations provided by spray in RegistrationService.scala too

  import model.RegistrationProtocol._
  import spray.json._

Upvotes: 5

Related Questions