Serialize ein Doppel auf 2 Dezimalstellen mit Jackson

Ich bin mit Jackson mit Spring MVC zu schreiben, die einige einfache Objekte wie JSON. Eines der Objekte, hat eine amount Eigenschaft, der Art Double. (Ich weiß, dass Double sollte nicht verwendet werden als Geldbetrag. Jedoch, dies ist nicht mein code.)

In der JSON Ausgabe möchte ich einschränken, um die Menge auf 2 Dezimalstellen. Derzeit ist es wie folgt angezeigt:

"amount":459.99999999999994

Ich habe versucht, mit Feder 3 ist @NumberFormat Anmerkung, aber hatte noch nicht den Erfolg in dieser Richtung. Sieht aus wie andere hatten Fragen zu: MappingJacksonHttpMessageConverter ist ObjectMapper nicht verwenden ConversionService beim binden von JSON zu JavaBean-propertiesenter link-Beschreibung hier.

Auch, ich habe versucht mit der @JsonSerialize annotation, mit der eine benutzerdefinierte serializer.
Im Modell:

@JsonSerialize(using = CustomDoubleSerializer.class)
public Double getAmount()

- Und serializer-Implementierung:

public class CustomDoubleSerializer extends JsonSerializer<Double> {
    @Override
    public void serialize(Double value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException {
        if (null == value) {
            //write the word 'null' if there's no value available
            jgen.writeNull();
        } else {
            final String pattern = ".##";
            //final String pattern = "###,###,##0.00";
            final DecimalFormat myFormatter = new DecimalFormat(pattern);
            final String output = myFormatter.format(value);
            jgen.writeNumber(output);
        }
    }
}

Den CustomDoubleSerializer "scheint" zu funktionieren. Jedoch kann jeder jeden schlagen jede andere, einfachere (oder mehr standard -) Möglichkeit dies zu tun.

InformationsquelleAutor der Frage mlo55 | 2012-07-17

Schreibe einen Kommentar