@Override
        public Date unmarshall(JsonUnmarshallerContext unmarshallerContext) throws Exception {
            String dateString = unmarshallerContext.readText();
            if (dateString == null) {
                return null;
            }

            try {
                if (TimestampFormat.RFC_822.getFormat().equals(dateFormatType)) {
                    return DateUtils.parseRFC822Date(dateString);
                }

                if (TimestampFormat.UNIX_TIMESTAMP.getFormat().equals(dateFormatType)) {
                    return DateUtils.parseServiceSpecificDate(dateString);
                }

                if (TimestampFormat.UNIX_TIMESTAMP_IN_MILLIS.getFormat().equals(dateFormatType)) {
                    return DateUtils.parseUnixTimestampInMillis(dateString);
                }

                return DateUtils.parseISO8601Date(dateString);
            } catch (Exception exception) {
                // fallback to the original behavior.
                return DateJsonUnmarshaller.getInstance().unmarshall(unmarshallerContext);
            }
        }
Unmarshaller for Date values - JSON dates come in as epoch seconds for AWS services and ISO8601 string
for API Gateway fronted services..
aws-java-sdk-core/src/main/java/com/amazonaws/transform/SimpleTypeJsonUnmarshallers.java