2016-03-08 35 views
0

我目前正在做一個播放教程。我已經定義了一個控制器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

您的隱式格式化程序對於需要它的代碼似乎不可見。我不確定Controller中的Event是您認爲的類:它可能是對控制器本身的引用,因爲它也被命名爲Event。嘗試將Controller重命名爲EventController,並在需要時導入隱式格式程序。

+0

是的,這是一個名稱衝突。 – octavian