を使用しJackson
て、Spring MVC
いくつかの単純なオブジェクトを として書き出しますJSON
。オブジェクトの 1 つは、amount
タイプ のプロパティを持っていますDouble
。(Double
金額として使用すべきではないことはわかっています。ただし、これは私のコードではありません。)
出力ではJSON
、金額を小数点以下 2 桁に制限したいと思います。現在、次のように表示されています。
"amount":459.99999999999994
Spring 3 の@NumberFormat
アノテーションを使用してみましたが、その方向では成功していません。他の人にも問題があったようです: MappingJacksonHttpMessageConverter の ObjectMapper は、JSON を JavaBean プロパティにバインドするときに ConversionService を使用しませんここにリンクの説明を入力してください。
また、@JsonSerialize
カスタムシリアライザーでアノテーションを使用してみました。
モデルでは:
@JsonSerialize(using = CustomDoubleSerializer.class)
public Double getAmount()
そしてシリアライザの実装:
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);
}
}
}
「CustomDoubleSerializer
見える」は機能します。ただし、これを行うための他のより簡単な(またはより標準的な)方法を誰でも提案できますか。