GsonBuilder.setDateFormat()
использует SimpleDateFormat
.
И SimpleDateFormat
не поддерживает микросекунды во время синтаксического анализа. S
обозначает миллисекунды, что означает только 3 знака после запятой.
Это можно доказать. В вашем JSON удалите микросекунды и используйте 2020-05-27 05:23:43.022
в качестве ввода.
Результат будет
2020-05-27 05: 23: 43.022
Timestamp
поддерживает микросекунды, и если вы хотите преобразовать 2020-05-27 05:23:43.022610
(с микросекундами) в Timestamp
, вам лучше написать настраиваемый десериализатор GSON
Изменить: образец десериализатора для отметки времени
class TimestampDeserializer implements JsonDeserializer<Timestamp> {
@Override
public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
// Handle null checks or format check, etc.
return Timestamp.valueOf(json.getAsString());
}
}
Использование:
Gson gson = new GsonBuilder().serializeNulls().registerTypeAdapter(Timestamp.class, new TimestampDeserializer()).create();