Es gibt viele Beiträge über die Erstellung Jackson Serializer für Zahlen, Währung, etc. Für technische Anwendungen, ist es oft erforderlich, die Genauigkeit auf Zahlen basierend auf den Einheiten oder andere Kriterien.Need Jackson Serializer für Double und müssen präzisieren zur Laufzeit
Zum Beispiel können räumliche Koordinaten auf 5 oder 6 Stellen hinter dem Komma beschränkt sein, und die Temperatur kann auf 2 Stellen hinter dem Komma beschränkt sein. Standard-Serializer-Verhalten, das zu viele Ziffern oder abgeschnittene Exponentialschreibweise hat, ist nicht gut. Was ich brauche, ist etwas wie:
und noch besser in der Lage sein, die Genauigkeit zur Laufzeit anzugeben. Ich benutze auch ein MixIn. Ich könnte für jede Klasse einen Serialisierer schreiben, aber ich wollte auf bestimmte Werte festlegen.
Irgendwelche Ideen würden geschätzt.
Das funktioniert fast. Übrigens haben Sie einen Tippfehler "Serilaizer". Das Problem, das ich jetzt habe, ist, dass ich ein MixIn verwende, damit ich POJOs nicht mit Jackson Annotationen verschmutze. Das MixIn sieht folgendermaßen aus: '@JsonSerialize (using = JacksonJsonDoubleSerializer.class) @FormatterPrecision (Genauigkeit = 2) abstract Double getValue();' Die '@ FormatterPrecision' ist am Ort nicht erlaubt. – smalers
Dies liegt daran, dass ich die Annotation so konfiguriert hatte, dass sie nur auf Feldebene über '@Target ({ElementType.FIELD}}}} verwendet werden kann. Sie können für Methoden, Konstruktoren etc. konfigurieren. Ich habe die Antwort bearbeitet, um auch Methoden zu erlauben, indem ich 'ElementType.METHOD' hinzufüge. –
Der 'ElementType.METHOD'-Vorschlag hat funktioniert. Unten ist meine Lösung, die DecimalFormat statt BigDecimal verwendet, mit hoffentlich guter Leistung. – smalers