2017-09-26 23 views
1

我試圖一個案例類匹配到的MongoDB(0.12),但是一個字段是日期,我想出這個運行時錯誤從MongoDB的申報日期爲正確類型

[JsResultException: JsResultException(錯誤:清單((/日期,列表(JsonValidationError(名單(error.expected.date),WrappedArray())))))]

從我的MongoDB集合看起來文件喜歡這樣的:

{ "_id": ObjectID("59c33152ca2abb344c575152"), "date": ISODate("2017-09-26T00:00:00Z"), "population": 1200 } 

而且我案例類是:

case class MyClass(_id: Option[BSONObjectID] = None, date: Date = new Date, population: Int = 0) 

我曾嘗試各種組合。任何人都可以看到問題可能是什麼?在此之後,我打算將其轉換爲字符串並在屏幕上輸出它。由於


只是爲了說明,我也有這個伴侶對象

object MyClass { 
    implicit val myClassFormat = Json.format[MyClass] 
    } 

回答

0

您可能需要描述正確的Json Format Date類型,像這樣的(使用org.joda.time.DateTime) :

import org.joda.time.{DateTime, DateTimeZone} 
import play.api.libs.json._ 

object myClass { 
    val ISO8601 = "yyyy-MM-dd'T'HH:mm:ssZZ" 
    implicit val dateFormat: Format[DateTime] = Format[DateTime](Reads.jodaDateReads(ISO8601), Writes.jodaDateWrites(ISO8601)) 
} 
+0

但是,感謝您的一些代碼似乎已棄用* scala 2.12 *。此外,我編輯了問題以顯示格式化* case類的* companion對象* - 不確定是否有任何特定的事情需要在這裏爲* date *完成。 –

+0

在我看來,你必須在你的'Format [MyClass]'之前聲明一個隱式'Format [Date]',你已經試過了嗎? – Antoine

+0

我在Play ** [https://www.playframework.com/documentation/2.6.x/ScalaJsonAutomated]中使用了**自動映射,所以我認爲這樣可以確保所有字段格式正確。我按照你的建議嘗試了這個,但它沒有引用類字段:'implicit val weatherDateFormat = Json.format [Date]' –

相關問題