【问题标题】:Jackson deserialize Joda DateTime from Unix formatJackson 从 Unix 格式反序列化 Joda DateTime
【发布时间】:2013-09-25 04:59:51
【问题描述】:

从 JSON 反序列化时,我的日期以 Unix 纪元时间 (/Date(1379542610387+1000)/) 编写。

我知道以这种方式在 Json 中序列化日期是非常标准的,但是我怎样才能将此值反序列化为 Joda DateTime?

当杰克逊看到这样的值时,它会吐出:

Invalid format: "/Date(1379542610387+1000)/"

【问题讨论】:

  • 如果这真的是日期的样子(+1000 UTC 偏移量以小时和分钟为单位吗?)您将不得不将其作为字符串读取并自己解析和解释。
  • 引号之间的内容完全来自 API 的响应。我相信 +1000 是 UTC 偏移量(澳大利亚东部标准时间)。我已经在一些 API Json 响应中看到过这种格式,并且不太热衷于将它的 string.split 分成几部分。

标签: java json jackson jodatime


【解决方案1】:
private static final Pattern pat = Pattern.compile("/Date\\((\d+)[\\+\\-](\\d+)\\)/");

...

String data = "/Date(1379542610387+1000)/";
Matcher m = pat.matcher(data);
if (m.matches())
{
    long time = Long.valueOf(m.group(1));
    int  offset = Integer.valueOf(m.group(2));
    System.out.printf("time=%d offset=%d\n",time,offset);
}
else
    // not a date in the recognized format ...

【讨论】:

    猜你喜欢
    • 2018-03-14
    • 1970-01-01
    • 2014-01-06
    • 2011-08-07
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    相关资源
    最近更新 更多