Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Scala无法反序列化java.util.date格式_Json_Mongodb_Scala_Playframework 2.2_Salat - Fatal编程技术网

Json Scala无法反序列化java.util.date格式

Json Scala无法反序列化java.util.date格式,json,mongodb,scala,playframework-2.2,salat,Json,Mongodb,Scala,Playframework 2.2,Salat,我有一个scala类,用于使用Salat的mongodb集合。我试图在测试用例中将json字符串反序列化为对象。但是,它抛出了一个关于日期类型格式的异常。使用salatdao获取对象时运行良好。但是当我测试它时,它给了我一个错误 为mongo系列分类 case class MemberData( id: ObjectId = new ObjectId, memberId: String, anotherDate: Date = new Date() ) object MemberD

我有一个scala类,用于使用Salat的mongodb集合。我试图在测试用例中将json字符串反序列化为对象。但是,它抛出了一个关于日期类型格式的异常。使用salatdao获取对象时运行良好。但是当我测试它时,它给了我一个错误

为mongo系列分类

case class MemberData(
  id: ObjectId = new ObjectId,
  memberId: String,
  anotherDate: Date = new Date()
)

object MemberData extends MemberDataDAO with MemberDataJson

trait MemberDataDAO extends ModelCompanion[MemberData, ObjectId] {
  def collection = mongoCollection("member_data")
  val dao = new SalatDAO[MemberData, ObjectId](collection) {}
}

trait MemberDataJson {
  implicit val memberDataJsonWrite = (
    (__ \ "id").write[ObjectId] ~
    (__ \ "memberId").write[String] ~
    (__ \ "anotherDate").write[Date](Writes.dateWrites("yyyy-MM-dd HH:mm:ss"))
    )(unlift(MemberData.unapply))
  implicit val memberDataJsonRead = (
    (__ \ 'id).read[ObjectId] ~
    (__ \ 'memberId).read[String] ~
    (__ \ 'anotherDate).read[Date](Reads.dateReads("yyyy-MM-dd HH:mm:ss")).orElse(Reads.pure(new Date()))
  )(MemberData.apply _)
}
测试用例失败:

val memberDataJsObj = Json.obj(
      "id" -> _id.toString,
      "memberId" -> "1",
      "anotherDate" -> updateDateStr
      )
val toJsonStr = Json.stringify(memberDataJsObj)
assert(MemberData.fromJSON(toJsonStr) == memberData)
! Invalid format: "2014-02-07 09:27:21" is malformed at " 09:27:21"
原因:

val memberDataJsObj = Json.obj(
      "id" -> _id.toString,
      "memberId" -> "1",
      "anotherDate" -> updateDateStr
      )
val toJsonStr = Json.stringify(memberDataJsObj)
assert(MemberData.fromJSON(toJsonStr) == memberData)
! Invalid format: "2014-02-07 09:27:21" is malformed at " 09:27:21"

您需要配置
上下文#jsonConfig#dateStrategy
以使用
StringDateStrategy
来指定要反序列化的日期的文本格式,
“yyyy-MM-dd HH:MM:ss”