版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32768743/article/details/88359203
最终定位到这个问题是因为java8 LocalDateTime序列化为字符串导致的,以前是序列化为毫秒数
新的token
{
"expireTime":"2019-03-08T21:58:38.798",
"token":"4a7f8559be107489d4e97cd02f9daef2",
"updateTime":"2019-03-08T20:58:38.798",
"userId":"da5f0e42e3a3ccb8575a44537fd9526e"
}
老的token
{
"expireTime":1552053732736,
"token":"5a4af07719da3e680b9817bdcd0a3c5f",
"updateTime":1552050132736,
"userId":"da5f0e42e3a3ccb8575a44537fd9526e"
}
然后为什么老的是序列化为数字呢?
没有找到fastjson直接把LocalDateTime变为Long的方法
所以只能再加一个VO了
data class TokenVO(
val userId: String,
val token: String,
val expireTime: Long,
val updateTime: Long
) {
companion object {
fun fromToken(token: Token) : TokenVO {
val expireTime = token.expireTime.toMs()
val updateTime = token.updateTime.toMs()
return TokenVO(
userId = token.userId,
token = token.token,
expireTime = expireTime,
updateTime = updateTime
)
}
}
}
fun LocalDateTime.toMs(): Long {
return this.toInstant(ZoneOffset.of("+8")).toEpochMilli()
}