このパターンを使用すると、シリアライズ対象のプロパティ(getter)にアノテーションでシリアライザを指定しなくてよくなります。
特定型に対して一律シリアライザを適用する場合には、もれなく実行できるメリットがあります。
カスタムなシリアライザの作り方はこちら→[Jackson]末尾のスペースを取り除いんてjson変換する
この例では、String型のプロパティに対して一律スペースをトリムするシリアライザが適用されます。
final Sample sample = new Sample(); sample.setName("aa "); sample.setAge(100); // 型とシリアライザのマッピングを定義 final SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(String.class, new TrimSpaceSerializer()); final ObjectMapper objectMapper = new ObjectMapper(); // ObjectMapperにシリアライザの定義を持つモジュールを追加 objectMapper.registerModule(simpleModule); final String result = objectMapper.writeValueAsString(sample); // カスタムなシリアライザ private static class TrimSpaceSerializer extends JsonSerializer{ @Override public void serialize( String value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { gen.writeString(value.trim()); } }
実行すると、この結果のようにString型のプロパティに対してトリムが行われます。
{"name":"aa","age":100}