首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala/Jerkson:在Json中指定日期对象的格式

Scala/Jerkson:在Json中指定日期对象的格式
EN

Stack Overflow用户
提问于 2012-11-22 09:52:20
回答 1查看 1.7K关注 0票数 3

我正在使用Date (杰克逊的包装器)序列化包含杰克逊的对象:

代码语言:javascript
复制
import com.codahale.jerkson.Json
import java.util.Date

case class JTest(
    val dTest: Date
)

val jt = new JTest(new Date())
println(Json.generate(jt))

其结果是:

代码语言:javascript
复制
{"dTest":1353576079168}

有什么方法可以指定格式或重写生成函数吗?

我意识到Json没有正确的日期类型,所以输出(unix time in millis)是“正确的”。我希望将我的日期序列化为ISO 8601 (带有时间/时区)格式的字符串:2007-04-05T01:12:22+0100,因为它很容易解析,并且具有可读性。Date的toString吐出了Thu Nov 22 10:27:54 CET 2012

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 08:30:48

这里有两个问题。首先,小问题的ISO8601日期-这些是可以实现的使用SimpleDateFormat,例如。

代码语言:javascript
复制
import java.text._
import java.util._
val d1 = new Date()
val sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
println(sdf.format(d1))

格式化程序将解析以及格式。记住不要在线程之间共享它(相反,在使用之前总是在本地范围内创建一个实例),因为它并不是线程安全的。

其次,在Jerkson中自动使用日期这一更棘手的问题。这似乎是杰克森的一个特点,它不如高举-json。后者允许将自定义解析器/格式化程序代码插入解析层。我想杰克森不知道。

我们仅仅是通过忽略它就克服了这个限制。我们喜欢Jerkson的优越性能,所以我们只使用Long和String进行数据传输,并分别处理解析。例如

代码语言:javascript
复制
case class JTest(val dTest: String) {
  lazy val dTestDate: Date = {
    val sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ")
    sdf.parse(dTest)
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13509922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档