汎用的にシリアライザを設定するのが賢い
com.fasterxml.jackson.databind.JsonSerializer 実装を
com.fasterxml.jackson.databind.ser.DefaultSerializerProvider
で、約束して ObjectMapper に登録する。
DefaultSerializerProvider が抱える
public final static class Impl extends DefaultSerializerProvider で
Method that can be used to specify serializer that will be
used to write JSON values matching Java null values
instead of default one (which simply writes JSON null).
と、NULL の時の設定メソッド setNullValueSerializer で設定する。
import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.DefaultSerializerProvider;
DefaultSerializerProvider dsp = new DefaultSerializerProvider.Impl(); dsp.setNullValueSerializer(new JsonSerializer<Object>(){ @Override public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException{ gen.writeString(""); } }); ObjectMapper mapper = new ObjectMapper(); mapper.setSerializerProvider(dsp);
デフォルトの JSON整形
DefaultPrettyPrinter printer = new DefaultPrettyPrinter(); printer.indentObjectsWith(new DefaultIndenter()); printer.indentArraysWith(new DefaultIndenter());
ObjectMapper mapper = new ObjectMapper();
String res = mapper.writer(printer).writeValueAsString(some);