--- JSONCallback.java.orig 2012-01-30 10:48:30.000000000 +0100 +++ JSONCallback.java 2012-04-23 17:05:42.000000000 +0200 @@ -20,6 +20,7 @@ import java.text.ParsePosition; import java.text.SimpleDateFormat; +import java.util.Date; import java.util.GregorianCalendar; import java.util.SimpleTimeZone; import java.util.UUID; @@ -76,13 +77,17 @@ new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); GregorianCalendar calendar = new GregorianCalendar(new SimpleTimeZone(0, "GMT")); format.setCalendar(calendar); - String txtdate = (String) b.get("$date"); - o = format.parse(txtdate, new ParsePosition(0)); - if (o == null) { - // try older format with no ms - format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); - format.setCalendar(calendar); - o = format.parse(txtdate, new ParsePosition(0)); + String txtdate = (String) b.get("$date").toString(); + try { + o = new Date(Long.parseLong(txtdate)); + } catch (NumberFormatException e) { + o = format.parse(txtdate, new ParsePosition(0)); + if (o == null) { + // try older format with no ms + format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); + format.setCalendar(calendar); + o = format.parse(txtdate, new ParsePosition(0)); + } } if (!isStackEmpty()) { cur().put( name, o );