2015-10-14 199 views
1

當我嘗試將JsValue JSON對象轉換爲一個對象,我收到以下錯誤轉換JsValue斯卡拉Play2到模型

play.api.libs.json.JsResultException: JsResultException(errors:List((/_id/$oid,List(ValidationError(List(error.path.missing),WrappedArray()))))) (JsReadable.scala:20) 

的JSON我傳遞:

val environmentBody = Json.parse("""{ 
         "name" : "Demo Value", 
         "schedulerUrl" : "https://ops-dev.videri.com/v1/scheduler/players/%s/schedules", 
         "playersUrl" : "https://ops-dev.videri.com/v1/crm/players", 
         "token" : "68a1fab4c911206165f3e426b50468eaa66193b56eee66ec508bf9304e6c8b92" 
        }""") 

和轉換:

val envObject = environmentBody.as[Environment]

環境模型是這樣的:

case class Environment(id:Option[String] = None, 
         name: String, 
         schedulerUrl: String, 
         playersUrl: String, 
         token: String) extends Model{ 
    def getId() = id 
} 

trait Model { 
    def getId():Option[String] 
} 

我不知道爲什麼這不起作用。據我所知,這不應該拋出任何驗證錯誤。

+1

我在我的項目(使用遊戲2.4)內嘗試過,它工作得很好。 – mfirry

+0

@mfirry任何想法的錯誤可能是什麼意思呢? – Arel

回答

2

你的代碼爲我工作。我做的唯一的事情就是放這條線:

implicit val reads = Json.reads[Environment] 
+0

任何想法的錯誤可能是什麼意思呢? – Arel

+0

不知道,其實。標識符'/ _id/$ oid',引用爲異常時缺少,這對我來說看起來很奇怪。也許這個問題是由你的格式化器/閱讀器造成的?你如何定義它? – Nyavro

+0

我沒有做任何特別的事情:'implicit val environmentReads = Json.reads [Environment]'和 'implicit val environmentWrites = Json.writes [Environment]' – Arel