Was ich
in einem Frühjahr Boot-1.5.2-Projekt möchte, schicke ich JSON-Nachrichten an einigen JMS (ActiveMQ) Warteschlangen/Themen über JmsTemplate#convertAndSend. Ich verwende Java 8 mit einigen Instanzen von LocalDate
und LocalDateTime
. Ich möchte die JSON-Ausgabe leicht ändern:Configure JSON Ausgabe im Frühjahr JMS-Nachrichten
- Pretty-Print der JSON; und
- Renderdaten/Zeitstempel im ISO-Format.
Standardmäßig endet die JSON bis alles in einer Zeile und Termine/Zeitstempel auf ein FIELDed Format umgewandelt, zum Beispiel:
"startDate" : { "year" : 2017, "month" : "MARCH", "era" : "CE", "dayOfYear" : 64, "dayOfWeek" : "SUNDAY", "leapYear" : false, "dayOfMonth" : 5, "monthValue" : 3, "chronology" : { "calendarType" : "iso8601", "id" : "ISO" } }
Was ich versucht habe
I‘ ve jackson-datatype-jsr310
zu den Projektabhängigkeiten hinzugefügt und ich habe setzen auch
spring.jackson.serialization.indent-output=true
spring.jackson.serialization.write_dates_as_timestamps=false
in application.properties
. Keine Änderung im Verhalten.
ich dann versucht, die Initialisierung des Nachrichtenwandlers Änderung dieser Einstellungen umfassen:
@Bean
@Primary
public MessageConverter jacksonJmsMessageConverter() {
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
ObjectMapper objectMapper = new ObjectMapper();
// default settings for MappingJackson2MessageConverter
objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// add settings I want
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
converter.setObjectMapper(objectMapper);
return converter;
}
Aber es gibt immer noch keine Änderung im Verhalten.
Wie kann ich die JSON-Ausgabe wie oben beschrieben anpassen?