2013-09-19 7 views
1

При десериализации из JSON у меня есть даты, которые написаны в эпоху Unix Epoch (/ Date (1379542610387 + 1000) /).Jackson deserialize Joda DateTime из Unix format

Я понимаю, что это довольно стандартно, чтобы сериализовать даты в Json таким образом, однако как я могу получить это значение десериализованным в Joda DateTime?

Когда джексон увидеть это значение, как это он выплевывает:

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

Если это действительно то, что дата выглядит (это +1000 в формате UTC смещение в часах и минутах?) Вы должны будете читать это как строка и разбор и интерпретировать ее самостоятельно. –

+0

Вещь между кавычками точно вытягивается из ответа API. Я считаю, что +1000 - это смещение UTC (австралийский восточный стандарт). Я видел этот формат в нескольких ответах API Json, и я не ужасно заинтересован в том, чтобы string.split его на части. –

ответ

0
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 ... 
Смежные вопросы