Это уже упоминалось в FAQ, на который указывает первый ответ, но на всякий случай: с помощью этой функции вы можете выбирать между числовым и текстовым представлением (числовое используется по умолчанию, поскольку оно намного быстрее):
objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
при этом будет использоваться формат даты по умолчанию, который затем можно переопределить, как указано (с помощью setDateFormat).
Также: вы можете упростить свой код следующим образом:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true);
mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
return mapper.writeValueAsString(object);
вместо явного использования StringWriter и JsonGenerator.