2017-12-23 6 views
1

Ich versuche, ein Java-Objekt in JsonNode wie folgt zu konvertieren.Konvertiere Java-Objekt in JsonNode mit Änderung in SerializationConfig pro Anfrage

mapper.setConfig(mapper.getSerializationConfig().with(contextAttributes)); 
mapper.valueToTree(object); 

Es gibt eine einzige objectMapper-Instanz. Also für jede Anfrage gibt es eine Änderung in der serialization-Konfiguration von objectMapper. Dies führt zu Nebenläufigkeitsproblemen, da ein Thread die Konfiguration des Mappers überschreiben kann, die durch den vorherigen festgelegt wurde. Ich kann keine neue ObjectMapper-Instanz für jede Anfrage erstellen. Ich kann nicht einmal eine Kopie davon erstellen, denn ObjectMapper javadoc Das Erstellen einer Kopie von ObjectMapper ist genauso teuer wie das Erstellen einer neuen Instanz.

Also, was ist der beste Weg zu konvertieren?

+0

Was ist die Frage? – CGritton

+0

Sie möchten prüfen, ob es andere Möglichkeiten für die Konvertierung gibt. – user3810386

Antwort

0

Dies scheint ein Fall für eine ObjectWriter Verwendung, die nach seiner javadoc ist

für pro-Serialisierung Konfiguration der Serialisierung Parameter verwendet

Sie eine Instanz von Ihrem ObjectMapper erstellen und hinzufügen die spezielle Konfiguration wie folgt:

ObjectWriter writer = mapper.writer(contextAttributes); 
writer.writeValue(responseOutputStream, object); 

DieDie Klasseenthält leider keine einfache Möglichkeit, die Ausgabe in eine zu schreiben. Wenn Sie wirklich brauchen, dass das Ergebnis keine Zeichenkette ist, können Sie es in eine Struktur wie diese lesen:

StringWriter sw = new StringWriter(); 
writer.writeValue(sw, object); 

JsonNode jsonNode = mapper.readTree(sw.toString());