なお、使用している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"}