找不到序列化程序

时间:2016-03-08 12:49:10

标签: scala playframework

我目前正在做一个Play教程。我已经定义了一个控制器Event,如下所示:

package controllers

import play.api.libs.json.Json
import play.api.mvc.{Action, Controller}

import com.semisafe.ticketoverlords.Event

class Event extends Controller{

  def list = Action { request =>
    val events: Seq[Event] = ???
    Ok(Json.toJson(events))
  }
}

然后,在包com.semisafe.ticketoverlords中,我定义了相应的objectcase class

package com.semisafe.ticketoverlords

import org.joda.time.DateTime
import play.api.libs.json.{Json, Format}

case class Event(
  id: Long,
  name: String,
  start: DateTime,
  end: DateTime,
  address: String,
  city: String,
  state: String,
  country: String
)


object Event {
  implicit val format: Format[Event] = Json.format[Event]
}

我收到以下编译错误:

No Json serializer found for type Seq[controllers.Event]. Try to implement an implicit Writes or Format for this type.

在线:

Ok(Json.toJson(events))

但事实并非如此,因为我已经定义了一个格式化程序,并且我正在导入包含该格式化程序的类。

为什么会出现此错误?

1 个答案:

答案 0 :(得分:1)

您的隐式格式化程序似乎对需要它的代码段不可见。我不确定你Event中的Controller类是你认为的那个:它可能是对控制器本身的引用,因为它也被命名为Event。尝试将Controller重命名为EventController,并在需要时导入隐式格式化程序。