なお、使用しているJacksonのバージョンは2.7.2となります。
デフォルトでは、何も行われないので、下の実行結果のように末尾のスペースがそのままシリアライズされます。
デフォルトの場合の動作
Sample sample = new Sample();
sample.setName("aaaa ");
StringWriter writer = new StringWriter();
objectMapper.writeValue(writer, sample);
{"name":"aaaa "}
スペースを除去するためには、カスタムのシリアライザを作成し、アノテーションで設定する必要があります。
このページが参考になります。
http://stackoverflow.com/questions/7161638/how-do-i-use-a-custom-serializer-with-jackson
カスタムのシリアライザの実装
JsonSerializerを継承して、serializeメソッドで値を書き換えます。シリアライズ対象の値(value)をtrimして書き込みます。
private static class TrimSpaceSerializer extends JsonSerializer<String> {
@Override
public void serialize(
String value,
JsonGenerator gen,
SerializerProvider serializers) throws IOException, JsonProcessingException {
gen.writeString(value.trim());
}
}
Beanにシリアライザを設定する
カスタムシリアライザをJsonSerializeアノテーションのusing属性に設定します。JsonSerializeは、値を変換書けたいプロパティのgetterに設定します。
private static class Sample {
private String name;
@JsonSerialize(using = TrimSpaceSerializer.class)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
実行結果
スペースがトリムされました。{"name":"aaaa"}