Serializa un doble a 2 decimales usando Jackson

Estoy usandoJackson, conSpring MVC, escribir algunos objetos simples comoJSON. Uno de los objetos, tiene unamount propiedad, de tipoDouble. (Yo sé esoDouble No debe utilizarse como una cantidad monetaria. Sin embargo, este no es mi código.

En elJSON De salida, me gustaría restringir la cantidad a 2 lugares decimales. Actualmente se muestra como:

"amount":459.99999999999994

He intentado usar Spring 3's@NumberFormat anotación, pero no han tenido éxito en esa dirección. Parece que otros también tuvieron problemas:El ObjectMapper de MappingJacksonHttpMessageConverter no usa ConversionService cuando vincula JSON a JavaBean..

Además, traté de usar el@JsonSerialize anotación, con un serializador personalizado.
En el modelo:

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

Y la implementación del serializador:

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);
        }
    }
}

losCustomDoubleSerializer "aparece" para trabajar. Sin embargo, ¿alguien puede sugerir alguna otra forma más simple (o más estándar) de hacer esto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta