我目前正在做一个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
中,我定义了相应的object
和case 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))
但事实并非如此,因为我已经定义了一个格式化程序,并且我正在导入包含该格式化程序的类。
为什么会出现此错误?
答案 0 :(得分:1)
您的隐式格式化程序似乎对需要它的代码段不可见。我不确定你Event
中的Controller
类是你认为的那个:它可能是对控制器本身的引用,因为它也被命名为Event
。尝试将Controller
重命名为EventController
,并在需要时导入隐式格式化程序。