を使用し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見える」は機能します。ただし、これを行うための他のより簡単な(またはより標準的な)方法を誰でも提案できますか。