4
當我嘗試在scala中使用json4s序列化AnyVal序列時遇到問題。使用json4s序列化AnyVal的序列
下面是測試使用FunSuite能重現問題:
import org.json4s._
import org.json4s.jackson.JsonMethods._
import org.json4s.jackson.Serialization._
import org.scalatest.{FunSuite, Matchers}
case class MyId(id: String) extends AnyVal
case class MyModel(ids: Seq[MyId])
class AnyValTest extends FunSuite with Matchers {
test("should serialize correctly") {
implicit val formats = DefaultFormats
val model = MyModel(Seq(MyId("1"), MyId("2")))
val text = write(model)
parse(text).extract[MyModel] shouldBe model
}
}
試圖從JValue提取爲MyModel,因爲它無法找到該ids
場一個合適的值時,測試失敗。
我注意到它AnyVal工作正常,雖然直接用類似使用時:
case class AnotherModel(id: MyId)
然後我能夠連載和正確deserialise。
是不是'case class MyId(id:String)extends AnyVal'在你看來有什麼意義?如果你想擴展一些行爲,也許最好使用* Traits *,你不這麼認爲嗎? – Gregg