Chuffey
@Chuffey
java-middle developer

Как задать 2 типа формата для GSON?

Добрый день.
С сервера приходит 2 типа даты:
1)"yyyy-MM-dd"
2)"yyyy-MM-dd HH:mm:ss".

Как для GSON задать формат даты, что бы он парсил по 2-му формату если есть часы и минуты, а если нету то парсил по 1 ?
private static final Gson GSON = new GsonBuilder()
            .setDateFormat("yyyy-MM-dd HH:mm:ss")
            .setDateFormat("yyyy-MM-dd")
            .create();

если делать как так, то он будет всегда парсить без времени, а если поменять местами то он будет валится с ошибкой если времени нету.

p.s. Спасибо!
  • Вопрос задан
  • 249 просмотров
Решения вопроса 1
Ewintory
@Ewintory
Java / Android developer
Я нашел ответ за 2 секунды
stackoverflow.com/questions/15563155/gson-to-json-...

new GsonBuilder().registerTypeAdapter(Date.class, new DateDeserializer());

private static final String[] DATE_FORMATS = new String[] {
        "MMM dd, yyyy HH:mm:ss",
        "MMM dd, yyyy"
};


private class DateDeserializer implements JsonDeserializer<Date> {

    @Override
    public Date deserialize(JsonElement jsonElement, Type typeOF,
            JsonDeserializationContext context) throws JsonParseException {
        for (String format : DATE_FORMATS) {
            try {
                return new SimpleDateFormat(format, Locale.US).parse(jsonElement.getAsString());
            } catch (ParseException e) {
            }
        }
        throw new JsonParseException("Unparseable date: \"" + jsonElement.getAsString()
                + "\". Supported formats: " + Arrays.toString(DATE_FORMATS));
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы