Trabalho com Gson do Google, para persistir e recuperar Objetos Java. Uso esse código para criar e formatar o Gson, com o Objetivo de prepapará-lo para receber certos formatos de datas, que vem de formulários e do banco de dados.
Gson g = new GsonBuilder().registerTypeAdapter(Date.class, new DateDeserializer()).create();
Essa é a classe DateDeserializer, que recebe um Gson e faz um parse com formatos de Datas, evitando a grande maioria dos erros.
public class DateDeserializer implements JsonDeserializer<Date> { private static final String[] DATE_FORMATS = new String[]{ "MMM dd, yyyy HH:mm:ss", "MMM dd, yyyy", "dd/MM/yyyy", "mmm dd, yyyy", "yyyy/MM/dd", "yyyy-MM-dd", "dd-MM-yyyy" }; @Override public Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jdc) throws JsonParseException { for (String format : DATE_FORMATS) { try { return new SimpleDateFormat(format, Locale.ROOT).parse(jsonElement.getAsString()); } catch (ParseException e) { } } throw new JsonParseException("Unparseable date: \"" + jsonElement.getAsString() + "\". Supported formats: " + Arrays.toString(DATE_FORMATS)); }
}
O problema é no formato que pus no título: “abr 19, 1991”. Sempre gera esse erro: Unparseable date, por mais que eu ja tenha colocado diversos formatos dentro da classe de Deserialização. Alguém já passou por isso ou sabe como solucionar..?